Javascript Can';无法访问React对象状态上的对象属性,即使它存在。返回未定义的

Javascript Can';无法访问React对象状态上的对象属性,即使它存在。返回未定义的,javascript,reactjs,Javascript,Reactjs,我使用AJAX获取一些JSON,然后我想显示值。如果我注销包含要显示的值的对象,我可以看到键和值。然而,当我试图直接访问该值时,我得到了未定义的值 以下是我一直使用的组件: var WeatherCard = React.createClass({ getInitialState: function () { return {}; }, componentDidMount: function() { var comp = this; $.get("http:/

我使用AJAX获取一些JSON,然后我想显示值。如果我注销包含要显示的值的对象,我可以看到键和值。然而,当我试图直接访问该值时,我得到了未定义的值

以下是我一直使用的组件:

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值将是一个问题。谢谢。