[英]Iterate loop over state object with an array key in React
我有一個函數getBar()
返回如下對象:
{
foo: 'value',
array: ['a', 'b', 'c']
}
這是我的React組件,調用上述函數,即getBar()
:
class foo extends Component {
state = {
bar: {}
};
componentDidMount(){
this.setState({
bar : getBar()
});
}
render() {
{this.state.bar.array.map((value, i) => <div class="row" key={i}>{value}</div>)}
}
}
它總是給我帶來Uncaught TypeError: Cannot read property 'map' of undefined
錯誤的Uncaught TypeError: Cannot read property 'map' of undefined
。 通過研究類似的問題 ,我知道必須聲明一個空狀態數組,該數組以不同的方式執行,但沒有任何作用。 任何人都可以最好地以完整的邏輯給我一個適當的答案。
我嘗試了另一種在render()
中將狀態數組聲明為const
,但未獲得成功的結果。
好的,所以這實際上與組件的生命周期有關
問題是您的render
方法在componentDidMount
方法之前運行。 因此,組件第一次呈現狀態時如下所示:
{
bar: {},
}
因此,bar上沒有數組屬性,這意味着您無法對其進行映射(這就是為什么會出現錯誤errors)。 相反,您可以使用componentWillMount
方法在運行render方法之前設置狀態,或者可以在映射之前對設置的數組進行檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.