所以我需要运行这行代码:
var vehicles = this.state.vehicles;
在渲染功能中:
render: function(){...}
我目前收到此错误:
Uncaught(in promise)TypeError:无法读取属性'state' 未定义
即使这条线有效:
this.setState({vehicles: json})
这也是代码的一部分:
getInitialState: function(){
this.render = this.render.bind(this)
return {
vehicles: []
}
}
如何解决此错误并访问数据?
答案 0 :(得分:3)
您不要绑定渲染功能。我假设您使用React.createClass
创建组件,因为您使用getInitialState
初始化状态。使用React.createClass
,React会自动为您执行绑定。
即使您通过扩展React.Component
创建组件,render方法和生命周期函数也会自动绑定到React Component上下文。
您的getInitialState
功能只是
getInitialState: function(){
return {
vehicles: []
}
}
示例工作代码段
var App = React.createClass({
getInitialState: function() {
console.log(this);
return {count: 0}
},
render: function() {
return <div>Count:{this.state.count}</div>
}
})
ReactDOM.render(<App/>, document.getElementById('app'))
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>
<div id="app"></div>
&#13;
答案 1 :(得分:1)
要使用this.setState
,首先必须在组件内的this
引用上声明状态变量。
您可以在consturctor中执行此操作,如下所示:
constructor(props) {
super(props);
this.state = {...};
}
您可以在React文档中详细了解本地状态:Adding Local State to a Class。
答案 2 :(得分:1)
你需要定义初始状态,看起来你没有,因此你得到了这个错误。
class YourComponent extends PureComponent {
state = {}; // <-- Initialize the state
}
或使用构造函数
class YourComponent extends PureComponent {
constructor(props) {
super(props);
this.state = {}; // <-- Initialize the state
}
}
或使用ES5(已弃用)
var YourComponent = React.createReactClass({
getInitialState: function() {
return {}; // <-- Initialize the state
},
// ...
});
答案 3 :(得分:1)
这似乎是一个上下文绑定问题。
无法读取属性&#39;州&#39;未定义的
这意味着this
未定义。我想你在某些改变处理程序中使用它。尝试onChange={this.changeHandler.bind(this)}
。