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。编辑了这个问题。。