在 react hook useState 的 set 参数中运行函数有什么缺点吗?



我遇到过一种情况,我不得不使用当前值进行进一步处理,并且不能依靠依赖项及时更新函数。我不得不做类似于以下内容的事情。

const [values, setValues] = useState({});
const someCallback = useCallback(() => {
setValues((values) => {
if(values.x === 'something') return ({ ...values, x: 'something else' });
return values;
});
}, []);

它对我有用,但这并不意味着它的权利。我从未见过有人像上面这样使用它,但我看不出上面有什么问题。像这样使用 useState 的 set 参数有什么缺点吗?

我认为它没有任何问题。您已经声明没有依赖项,这是正确的,因为您使用的是setValues的回调版本(并且setValues本身保证是稳定的(。

为了清楚起见,我可能会做的一件事,这更像是一种风格,可以双向争论,我可能会对setValues回调的values参数使用不同的名称:

const [values, setValues] = useState({});
const someCallback = useCallback(() => {
setValues((currentValues) => {
if(currentValues.x === 'something') return ({ ...currentValues, x: 'something else' });
return currentValues;
});
}, []);

但同样,你所拥有的似乎很好。

相关内容

  • 没有找到相关文章

最新更新