目标是重置一个值,如果道具已更改为与当前值不同的值,则该值在函数内部发生变化。
我正在尝试反作用钩子,但仍然不确定如何解决这个问题,以及是否可以解决。虽然这似乎如预期的那样有效,但我收到了ESlint警告:
Warning:(62, 8) ESLint: React Hook useEffect has a missing dependency: 'value'. Either include it or
remove the dependency array. (react-hooks/exhaustive-deps)
function (info) {
const initialValue = info.value;
const [value, set_value] = useState(initialValue);
useEffect(() => {
if (initialValue !== value) {
set_value(initialValue);
}
}, [initialValue]);
...};
我不能将value
变量添加到依赖数组中,因为它可以防止突变。
我在这里查看了react hooks文档和这个线程:https://github.com/facebook/react/issues/15865
但我仍然不确定如何将这些知识应用到我的案例中。
在useEffect
范围内不需要value
,可以使用功能更新:
function App({ value: initialValue }) {
const [value, set_value] = useState(initialValue);
useEffect(() => {
set_value((prevValue) =>
initialValue !== prevValue ? initialValue : prevValue
);
}, [initialValue]);
return <></>;
}