【发布时间】:2020-11-02 04:52:33
【问题描述】:
我正在使用functional components。我有2 单选按钮和submit 按钮。在提交按钮上我无法获得updated value。
这是我的代码 https://codesandbox.io/s/peaceful-microservice-ywdoe?file=/src/App.js
复制步骤
- 运行应用程序。默认单选按钮值为
no - 将任何单选按钮更改为
yes。然后单击提交按钮。它应该显示更新的状态值。但它显示初始状态为什么 ??
按钮提交处理程序
const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, []);
如果更改blank array to one item in array state like this。它可以正常工作,但是当我更改state 时它会重新渲染按钮组件。 任何更好的解决方案 ???防止重新渲染并获取更新状态?
const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, [state]);
【问题讨论】:
-
useChangeHandler在 App.js 中未定义。userchangehandler.js在沙箱中为空。从您的 sn-p 的外观来看,尽管我可以看到您已经使用空的依赖数组将初始状态包含在useCallback钩子中。我认为如果您将state添加到依赖项中,它应该 起作用。 TBH 可能也没有理由记住这个回调,因为Submit除了渲染按钮之外什么都不做。 -
为什么要不按钮重新渲染?
-
@DrewReese 更新链接codesandbox.io/s/dreamy-darwin-pi09b?file=/src/…
-
刚刚将
state添加到buttonHandleruseCallback 依赖数组中对其进行了测试,它可以工作。
标签: javascript reactjs react-redux react-router react-hooks