Javascript 在react中未使用钩子获取更新的状态值?
我正在使用Javascript 在react中未使用钩子获取更新的状态值?,javascript,reactjs,react-redux,react-router,react-hooks,Javascript,Reactjs,React Redux,React Router,React Hooks,我正在使用功能组件。我有2个单选按钮和一个submit按钮。在submit按钮上,我无法获得更新值 这是我的密码 复制步骤 运行应用程序。默认情况下,单选按钮值为no 将任一单选按钮更改为是。然后单击提交按钮。它应该显示状态的更新值。但它显示的是初始状态为什么 按钮提交处理程序 const buttonHandler = useCallback(async e => { e.preventDefault(); console.log(state); }, []);
功能组件
。我有2个
单选按钮和一个submit
按钮。在submit按钮上,我无法获得更新值
这是我的密码
复制步骤
no
是
。然后单击提交按钮。它应该显示状态的更新值。但它显示的是初始状态为什么 const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, []);
如果像这样将空白数组更改为数组状态下的一个项目
。它可以正常工作,但当我更改状态
时,它会重新渲染按钮组件有更好的解决方案吗???防止重新渲染并获取更新状态
const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, [state]);
将
状态
添加到按钮句柄
使用回调依赖项数组
const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, [state]);
或者,不要记忆按钮Handler
回调
const buttonHandler = e => {
e.preventDefault();
console.log(state);
};
将
状态
添加到按钮句柄
使用回调依赖项数组
const buttonHandler = useCallback(async e => {
e.preventDefault();
console.log(state);
}, [state]);
或者,不要记忆按钮Handler
回调
const buttonHandler = e => {
e.preventDefault();
console.log(state);
};
useChangeHandler
在App.js中未定义userchangehandler.js
在沙箱中为空。但是,从这里代码片段的外观来看,我可以看到您使用了一个空的依赖项数组将初始状态包含在useCallback
hook中。我认为如果你在依赖项中添加state
,它应该会起作用。TBH可能也没有理由记住此回调,因为Submit
除了呈现按钮外不做任何事情。为什么不希望按钮重新呈现?检查updated link@drewrese updated link刚刚使用添加到buttonHandler
useCallback依赖项数组中的state
对其进行了测试,它可以工作。useChangeHandler
App.js中未定义userchangehandler.js
在沙箱中为空。但是,从这里代码片段的外观来看,我可以看到您使用了一个空的依赖项数组将初始状态包含在useCallback
hook中。我认为如果你在依赖项中添加state
,它应该会起作用。TBH可能也没有理由记住此回调,因为Submit
除了呈现按钮外不做任何事情。为什么不希望按钮重新呈现?检查updated link@drewrese updated link刚刚使用添加到buttonHandler
useCallback依赖项数组中的state
对其进行了测试,这很有效。我明白你的意思,但我会对此进行优化??对于性能方面的按钮
组件,当状态更改时将重新渲染。这是一个最佳实践吗?为什么我要问这个问题,因为如果我的表单中有多个元素。当我更改任何组件状态时,它会重新渲染按钮
component@user944513这看起来完全属于过早优化的范畴。使用useCallback
时,它必须重新启动,因为您需要更新回调以包含更新的状态。由于每次状态更新和每个渲染周期都会发生这种情况,因此“提交”按钮无论如何都会重新渲染。目前不使用记忆回调是否存在性能问题?我明白你的意思,但我会对此进行优化??对于性能方面的按钮
组件,当状态更改时将重新渲染。这是一个最佳实践吗?为什么我要问这个问题,因为如果我的表单中有多个元素。当我更改任何组件状态时,它会重新渲染按钮
component@user944513这看起来完全属于过早优化的范畴。使用useCallback
时,它必须重新启动,因为您需要更新回调以包含更新的状态。由于每次状态更新和每个渲染周期都会发生这种情况,因此“提交”按钮无论如何都会重新渲染。当前是否存在不使用记忆回调的性能问题?