【发布时间】:2020-12-15 06:37:24
【问题描述】:
我有一个 userContext 包装了我的应用程序,我有一个自定义钩子 useAnalytics 用于发送分析事件,我有一个 Login 组件,它执行登录并更改上下文中的用户值并发送事件。
我的问题是,当我在登录组件中执行 setUser 时,更新的用户数据不会反映在 useAnalytics 钩子中,它总是在每个事件中发送用户数据
这里是一个沙盒:https://codesandbox.io/s/romantic-perlman-wzxti?file=/src/Login.js 点击SEND后可以打开控制台查看结果
我知道这可能是一种反模式,但最好知道我为什么会出现这种行为
谢谢!
【问题讨论】:
-
据我了解,问题是在第一次点击时它会发送一个空对象而不是
{user: "pippo"},对吗? -
@BesoKakulia 是的!你说的对! :)
-
下面的解决方案应该可以工作,你的问题是你在状态更新之前发送分析,因为在反应中更新状态是一个异步操作。
标签: reactjs react-hooks react-context