reactjs - 从 UseContext 值初始化 UseState 值
问题描述
我有上下文和状态变量。我的状态变量是用我的上下文变量初始化的。例如,当我在另一个组件中更新我的上下文时:更改玩家的动作(从攻击到防御),状态变量保持之前的值。
const [player,setPlayer] = useContext(PlayerContext);
const [action, setAction] = useState(player.action);
useEffect(() => {
console.log(action); // => attack
console.log(player.action); // => defend
});
这肯定是一个渲染问题。
解决方案
如果您希望action
状态变量反映对 的更新player.action
,则需要确保您的依赖数组( 的第二个参数useEffect
)包含player.action
(以便它仅在值更改时运行),然后setAction
显式调用:
useEffect(() => {
if (player.action !== action) {
setAction(player.action);
}
}, [player.action])
React 文档有一个关于使用 Effect Hook的广泛指南,它可能会有所帮助,以及useEffect
hook API 参考。
推荐阅读
- intellij-idea - IntelliJ 重命名 java 包和事件?
- kivy - 如何在 kivy 语言中指定画布指令的索引
- c# - Serilog 不使用 .NET Core 2.2 写入文件
- laravel - Laravel 5.5 where() 结果不是预期的
- python - Python Flask SocketIO 多处理不同的类函数
- amazon-web-services - 我们如何在 AWS 中安装 Alienvault 的 OSSIM?
- testing - 选择器应该用一个函数来初始化
- css - 谁能解释一下如何使用 postcss-preset-env 的 importFrom?
- python-3.x - 使用 Python 加密文本 - RaspberryPi Org 项目
- java - 带有 Eclipse 的 Apache Tomcat 链接