目标是重置一个值,如果属性已更改为与当前值不同的值,则该值会在函数内部变异。
我正在尝试做出反应,但仍然不确定如何解决以及是否可以解决。 虽然这似乎按预期工作,但我收到了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
但是我仍然不确定如何将这些知识应用于我的案子。
答案 0 :(得分:2)
在value
范围内不需要useEffect
,可以使用functional updates:
function App({ value: initialValue }) {
const [value, set_value] = useState(initialValue);
useEffect(() => {
set_value((prevValue) =>
initialValue !== prevValue ? initialValue : prevValue
);
}, [initialValue]);
return <></>;
}