react-native - 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
调用的。
解决方案
为什么需要isMounted
状态?如果您将此状态用作设置状态的条件,则posts
可以只调用函数getPosts
内部的方法,componentDidMount
并且应该可以按预期工作:
async componentDidMount(){
await getPosts()
}
你说对了?等待您对我的回答的反馈。谢谢 :)
推荐阅读
- laravel - 如何根据分类id获取laravel中的所有子分类id?
- inno-setup - 将部分代码从 InitializeWizard 移动到 Inno Setup 中的 InitializeSetup 有什么好处吗?
- linux-kernel - Android 在新 ARCH 上的新设备上移植
- python - Beautifulsoup 获取具有相同类的元素
- javascript - 将参数传递给过滤器项时,cytoscape js过滤器不起作用
- sql - BigQuery - 获取每个用户的最新数据
- symfony - 具有多个约束和组的 Symfony 自定义验证器
- reactjs - 如何拆分 Nextjs 中跨越 `_app.tsx` 和 `pages/index.tsx` 的长任务?
- r - 如何在 RStudio 上像这样渲染 R-Presentation (ioslide)?
- javascript - 使元素以角度调整大小 2+