如何解决React.js useState值与异步匹配
我遇到一个奇怪的问题,就是有时传递到useState
的值与useState
的变量不同。每次在同一UI组件上都发生这种情况,而其他UI组件没有此问题。只是想再次检查我在这里做错了什么。
// userData is from Redux store
const {userData} = props
const [installed,setInstalled] = useState(userData.installed) // installed: boolean
console.log(userData.installed) // returns true
console.log(installed) // returns false
console.log(userData) // installed: true
原因之所以使用useState是因为我正在使用它来呈现将被切换的按钮,并显示是否被切换的指示符。
<Button onClick={() => setInstalled(!installed) />
解决方法
我建议使用useEffect
来查看Redux存储中的状态,然后根据所做的更改来更新本地状态:
const [userData] = props ;
const [installed,setInstalled] = useState(userData.installed)
useEffect(() => {
setInstalled(userData.installed)
},[userData])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。