Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用React-useState钩子函数调用中止状态集_Javascript_Reactjs - Fatal编程技术网

Javascript 使用React-useState钩子函数调用中止状态集

Javascript 使用React-useState钩子函数调用中止状态集,javascript,reactjs,Javascript,Reactjs,使用旧的基于类的this.setState()方法,我们可以从传递到setState的函数返回null,告诉React不要对特定的setState调用执行任何操作: this.setState(({ value }) => { if (value === 0) { return null; } else { return { value: value - 1 }; } }); 我想知道用React钩子做这件事的正确方法是什么,下面的正确吗 const [x,

使用旧的基于类的
this.setState()
方法,我们可以从传递到
setState
的函数返回
null
,告诉React不要对特定的
setState
调用执行任何操作:

this.setState(({ value }) => {
  if (value === 0) {
    return null;
  } else {
    return { value: value - 1 };
  }
});
我想知道用React钩子做这件事的正确方法是什么,下面的正确吗

const [x, setValue] = useState(0);
setValue(value => {
  if (value === 0) {
    return value;
  } else {
    return value - 1;
  }
});

如果传递原始值,我将尝试不触发重新渲染。

看起来像是
useffect
hook的作业:

useEffect(() => {
setValue(value => {
  if (value === 0) {
    return value;
  } else {
    return value - 1;
  }
});
}, [x])

仅当
x
更改时,效果才会运行。

看起来像是
useffect
hook的作业:

useEffect(() => {
setValue(value => {
  if (value === 0) {
    return value;
  } else {
    return value - 1;
  }
});
}, [x])

只有当
x
发生变化时,效果才会运行。

@NikitaMadeev-see-Oh不知道这种可能性。那么您的解决方案看起来是可行的,因为@NikitaMadeev-see-Oh不知道这种可能性。那么你的解决方案看起来是可行的,因为我正在处理对象,所以很不幸,它不是那么直接。怎么会这样
x
是您的示例中的一个数字。这是一个简化的示例,我正在寻找一个通用解决方案,虽然我正在处理对象,但不幸的是,它不是那么直接。如何
x
是您示例中的一个数字。这是一个简化的示例,但我正在寻找通用解决方案