我正在尋找這麼多的方式來解決這個內部狀態,但沒有一個人的作品,setState
仍然不是這裏的componentWillReciveProps
方法裏面工作是我的代碼:反應母語:未更新componentWillReciveProps
export class Detail extends React.Component
{
constructor(props)
{
super(props);
this.state = {
ids: 'ger'
}
}
componentWillReceiveProps(nextProps) {
this.setState({ ids: nextProps.data },() => {
console.log(nextProps.data+"=this id")
});
}
render()
{
return (
<View>
<Text>{this.state.ids}</Text>
</View>
);
}
}
如果我做console.log(nextProps.data+"=this id")
它可以將我想更新的ID返回到this.state.ids
。但在<Text>{this.state.ids}</Text>
中,渲染仍顯示默認值this.state.ids
('ger'),表示this.state.ids
未在componentWillReceiveProps
中更新。
我認爲這與你的[上一個問題](https://stackoverflow.com/q/46389012/2315280)有關,並且可能是由於你的渲染項目上沒有'key' prop 'ListView'。請看看[這個答案](https://stackoverflow.com/a/35229429/2315280) – bennygenel
我試過這種方式,仍然得到這個問題,奇怪的是'nextProps.data'獲得id時成功我做'console.log(nextProps.data +「=這個id」)'(例如,輸出是「4 = this id」),但ids狀態仍然沒有更新,即使我已經做了'this.setState({ids :nextProps.data})''componentWillReceiveProps''內:'( – janotama