我使用componentDidUpdate()方法在屏幕上显示更新的数据,无论何时执行任何功能,如扫描二维码和存储数据。但是在网上搜索后,我发现在componentDidUpdate()中调用this.setState会产生无限循环。我试图通过在上面的方法中包含prevState来解决这个问题,但是我失败了。下面是我的代码,了解更多细节。如何在没有componentDidUpdate()帮助的情况下更新来自异步存储的状态?
componentDidUpdate() {
try {
AsyncStorage.getItem('Data').then((value) => {
this.setState({
list: JSON.parse(value)
})
})
} catch (err) {
}
}任何帮助或建议都将是有益的,谢谢。
发布于 2019-02-06 18:29:54
更新componentDidUpdate中的状态将触发另一个componentDidUpdate调用,因此您应该限制调用setState()。例如:
componentDidUpdate(prevProps, prevState) {
// Only update state if list is empty
if (prevState.list.length === 0) {
try {
AsyncStorage.getItem('Data').then((value) => {
this.setState({
list: JSON.parse(value)
})
})
} catch (err) {
}
}
}https://stackoverflow.com/questions/54551302
复制相似问题