我获取数据。获取数据在我<code>componentDidMount()</code>方法阵营与本土<code>fetch(url, ...)</code>“只能更新一安装或安装组件”
所以我的课看起来像
class Posts extends Component {
state = {
posts: []
};
componentDidMount() {
fetch('https://...').then(res => res.json()).then(res => {
this.setState({ posts: res.posts });
}
}
render() {
return <FlatList data={this.state.posts} ... />;
}
}
它工作得很好,直到所有我开始使用redux
和redux-persist
。
现在我得到警告Warning: Can only update a mounted or mounting component. ...
。
我不明白为什么会这样,因为如果它被称为在componentDidMount
应该安装。
我想知道是否需要中止取数componentWillUnmount
或者如果我应该实际将数据提取到redux存储区而不是只将数据临时存储在“本地组件”中。当我打开大多数其他应用程序时,似乎数据已在我打开应用程序时加载 - 这是由于非常快速的数据检索还是将数据保存在持久存储中?
我看过一些项目,他们在componentDidMount
里面使用if (this.isMounted) { .. }
,但是据我了解这个方法的生命周期,这个组件总是在这个时候挂载。此外,似乎isMounted
已弃用。
我在做什么错?这个问题只发生在我启动应用程序时,所以如果我导航到另一条路线然后返回到这条路线没有问题。
感谢:
你应该确保在设置它的状态,这样的组件仍然安装!有用!但是这个方法对我来说似乎有点奇怪。用redux取数据会有意义吗? – Jamgreen
当我使用redux时,我这样做,但它并不总是有道理的。是的,终极版将免费为您担心安装(因为'connect'),但话又说回来了,现在你需要卸载时,可能(取决于您是否想缓存与否)从内存中清除数据。 还有其他的方法少了混乱,而不是承诺保持它在全球范围的状态(这并不总是适合)来获取这些数据。我最喜欢的是“重组”。 –
为什么这不是最好的方法思考食物:https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html – Martin