我正在尝试使用点表示法访问json对象,但它会引发错误。这是我的代码:https://codepen.io/manAbl/pen/aGymRg?editors=0110
我这样解构:const { weather } = this.state;
当我这样做时:console.log(weather)
它向我显示了洞json对象,很好但是当我尝试console.log(weather.name)
时,控制台会抛出错误
我做错了什么?我一定很容易丢失一些东西,但是我看不到它而且我被困住了
我希望能够访问属性并将它们设置为我的状态值,因此我可以根据当前天气情况编写一些显示图标的函数
答案 0 :(得分:2)
this.state.weather
最初是null
(在调用setState
中的componentDidMount
之前),所以在访问之前,您需要先检查它是否为空属性。
或者,最初将weather
设置为{}
而不是null
。
答案 1 :(得分:0)
你像这样初始化你的状态:
this.state = {
weather: null,
loading: true,
};
然后,您需要更新weather
componentDidMount
var
在调用componentDidMount
方法后触发 render
因此,第一次调用render
方法时,weather
var为null
并在调用componentDidMount
后填充
你应该做
this.state = {
weather: {},
loading: true,
};
或检查您的var是否不是null