reactjs - Redux 状态和 useState 不同步
问题描述
我想将我的 reduxState 设置为 useState,但问题是 reduxState 在渲染之后出现,然后 useState 仍然有第一次渲染时得到的 null。期望:reduxState 将每次更改或更新传递给 useState。
const Account: React.FC<Props> = ({ logInAction, userDataStore }) => {
const [userValues, setUserValues] = useState<User>(userDataStore as User);
return (
<Text>
{/*
this data (userValues) still null
despite userDataStore
is changed and has Data
*/}
Fullname: {userValues.fullName}
</Text>
);
.
.
.
export default connector(Account);
我知道直接使用 redux state 对我有用:
userDataStore.fullName
<Text>
{/* fullName: {userValues.fullName} */} ---> not work always null
fullName: {userDataStore.fullName} ---> this work good
</Text>
);
但我想使用useState。请问有什么帮助吗?
我将不胜感激。
解决方案
不确定您不想使用 reduxState 并使用useState
钩子的原因是什么,但您可以通过添加钩子来实现 reduxState 和用户值之间的同步useEffect
:
const [userValues, setUserValues] = useState<User>(userDataStore as User);
useEffect(() => {
setUserValues(userDataStore as User)
}, [userDataStore]);
...
这将设置userValues
每当userDataStore
更改。
推荐阅读
- html - 动态下拉选择 HTML 后输出文本
- javascript - javascript中的多重计算和目标输出
- batch-file - 如何使用 Batch 在可滚动菜单中制作一系列拨动开关?
- javascript - 在 SVG 元素旁边插入文本
- c++ - 如何打印二叉搜索树的级别?
- python - 无法在 windows 中安装 tensorflow
- rust - 为什么从 stderr 读取时 BufReader 挂起?
- react-native - 不变违规:本机模块不能为空。(应用运行问题)2020
- python - Pyinstaller 更新问题不起作用并且 pyinstaller 未找到修复?
- reactjs - MarginBottom 有效,但 PaddingBottom 在 React Native 上无效?