Javascript Can';无法访问React对象状态上的对象属性,即使它存在。返回未定义的
我使用AJAX获取一些JSON,然后我想显示值。如果我注销包含要显示的值的对象,我可以看到键和值。然而,当我试图直接访问该值时,我得到了未定义的值 以下是我一直使用的组件:Javascript Can';无法访问React对象状态上的对象属性,即使它存在。返回未定义的,javascript,reactjs,Javascript,Reactjs,我使用AJAX获取一些JSON,然后我想显示值。如果我注销包含要显示的值的对象,我可以看到键和值。然而,当我试图直接访问该值时,我得到了未定义的值 以下是我一直使用的组件: var WeatherCard = React.createClass({ getInitialState: function () { return {}; }, componentDidMount: function() { var comp = this; $.get("http:/
var WeatherCard = React.createClass({
getInitialState: function () {
return {};
},
componentDidMount: function() {
var comp = this;
$.get("http://api.openweathermap.org/data/2.5/weather?zip=" + this.props.zipcode + ",us", function(data) {
comp.setState(data);
});
},
render: function() {
// I want to get the value @ this.state.main.temp
// this works...
console.log(this.state.main);
// this does not work...
// console.log(this.state.main.temp);
// I want "current temp" to display this.state.main.temp
return (
<div className="well">
<h3>{this.state.name}</h3>
<p>Current Temp: {this.state.main} </p>
<p>Zipcode: {this.props.zipcode}</p>
</div>
);
}
});
var WeatherCard=React.createClass({
getInitialState:函数(){
返回{};
},
componentDidMount:function(){
var comp=此;
$.get(”http://api.openweathermap.org/data/2.5/weather?zip=“+this.props.zipcode+”,us“,函数(数据){
组件设置状态(数据);
});
},
render:function(){
//我想得到@this.state.main.temp的值
//这很有效。。。
log(this.state.main);
//这不管用。。。
//日志(this.state.main.temp);
//我希望“当前温度”显示此.state.main.temp
返回(
{this.state.name}
当前温度:{this.state.main}
Zipcode:{this.props.Zipcode}
);
}
});
这是整个过程。第一次通过时,
此.state
为空,这将使此.state.main.temp
成为未定义。可以使用正确的结构化对象预先填充状态,也可以使用if
子句换行
对于返回null或未定义的对象,React将简单地跳过渲染,而不显示任何警告或错误,但是当您使用返回null或未定义的嵌套结构时,将使用正常的JavaScript行为。尝试使用main:[],data:[]而不是空对象设置初始状态 我也遇到了同样的问题,一旦我使用AJAX设置状态并创建一个空的初始状态,一切都开始正常工作 我是个新来的反应者,所以我不能给你一个很好的解释,为什么这会产生不同。我似乎遇到了各种奇怪的问题
希望这有帮助。要初始化状态,应该使用我知道的,只是想说,用户应该进一步使用它来初始化
main.temp
当你说wrap-in-if子句时,是指render方法中的返回吗?我试图找到react的“最佳实践”,但到目前为止运气不佳。我不想预填充状态,因为初始化所有值将是我组件中的大量JOSN,如果我想呈现更多数据,稍后只初始化main.temp值将是一个问题。谢谢。