Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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钩子?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何在条件内调用React钩子?

Javascript 如何在条件内调用React钩子?,javascript,reactjs,Javascript,Reactjs,我有一个对象作为状态,具有一些属性。我想用钩子更新条件中的状态。 但它会导致一个无限循环 我可以像这样直接更新状态吗 const [info, setInfo] = useState({name: '' }) if (info.name === '') { info.name = 'empty' } 可以这样做吗?钩子是以use开头的东西,就像useState一样设置状态不是一个钩子-它是一个设置器/更新器。它可以在条件语句中使用。如果操作正确,就不应该有任何无限循环。在Reac

我有一个对象作为状态,具有一些属性。我想用钩子更新条件中的状态。 但它会导致一个无限循环

我可以像这样直接更新状态吗

const [info, setInfo] = useState({name: '' })

if (info.name === '') {
     info.name = 'empty'
 }

可以这样做吗?

钩子是以
use
开头的东西,就像
useState
一样<代码>设置状态不是一个钩子-它是一个设置器/更新器。它可以在条件语句中使用。如果操作正确,就不应该有任何无限循环。

在React函数组件中,useState钩子用作类组件中状态的替代。使用useState钩子的正确方法是

const [ variable, setVariable ] = React.useState( //default value );
    
默认值可以是null、“string”、{object}、true/false或0、1、2

就像类组件中的.setState()一样,使用

setVariable( newValue );
永远不要试图像改变正常变量那样改变状态变量。它们对于一次渲染是不可变的,因此在调用setState时会导致重新渲染


对于无限循环,请复制粘贴组件

您应该使用
useState
,如下所述:

const [info, setInfo] = useState({name: '' })

if (info.name === '') {
  setInfo({...info, name = 'empty'});
}

这将仅通过更改name属性来设置信息

否您永远不会直接更改状态。显示导致无限循环的其他更新代码您可以更新状态(正确地使用setState),只要它不是特定挂钩的触发器之一。我想用挂钩更新我的状态。我没有使用setState或类组件。我刚才提到的是它是否像setState。编辑了这个问题。。