React.js useState 值不异步匹配
React.js useState values do not match asynchronously
我遇到一个奇怪的问题,有时传递给 useState
的值与 useState
的变量不同。这种情况每次都发生在同一个 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 store 中的状态,然后根据这些变化更新本地状态:
const [userData] = props ;
const [installed, setInstalled] = useState(userData.installed)
useEffect(() => {
setInstalled(userData.installed)
},[userData])
我遇到一个奇怪的问题,有时传递给 useState
的值与 useState
的变量不同。这种情况每次都发生在同一个 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 store 中的状态,然后根据这些变化更新本地状态:
const [userData] = props ;
const [installed, setInstalled] = useState(userData.installed)
useEffect(() => {
setInstalled(userData.installed)
},[userData])