如何解决React Native - 即使使用 isMounted 标志,也无法对卸载的组件错误执行状态更改
我正在做一个 React Native 项目,我有一个函数可以进行 GraphQL 查询:
getPosts = async () => {
const result = await API.graphql(graphqlOperation(listPosts))
if(this.state.isMounted){
this.setState({ posts: result.data.Posts.items,isLoading: false,isMounted: false})
}
}
此函数在 componentDidMount
函数中调用。我在 isMounted
中还有一个 state
字段,它被初始化为 false
。在 componentDidMount
函数的最顶部,我有:
this.setState({ isMounted: true })
无论如何,我仍然收到有关尝试在卸载的组件上设置状态的警告。我还应该提到这个组件是从 this.props.navigation.navigate
call.
解决方法
为什么需要 isMounted
状态?如果您仅将此状态用作设置状态 posts
的条件,则只需调用 getPosts
函数内的 componentDidMount
方法,应该会按预期工作:
async componentDidMount(){
await getPosts()
}
你明白了吗? 等待您对我的回答的反馈。谢谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。