React中的useState()是什么?

我目前正在学习React中的hooks概念,并试图理解下面的示例

从“react”导入{useState};
函数示例(){
//声明一个新的状态变量,我们称之为“count”;
const[count,setCount]=useState(0);
返回(
<div>
<p>您单击了{count}次</p>
<按钮onClick={()=>设置计数(计数+1)}>
点击我
</button>
</div>
);
}

上面的示例增加处理程序函数参数本身的计数器。如果我想修改事件处理程序函数中的计数值,该怎么办

考虑以下示例:

setCount=()=>{
//如何在此处修改计数值。不确定是否可以使用setState修改其值
//我还想在这里修改其他状态值。我该怎么做
}
<按钮onClick={()=>setCount()}>
点击我
&lt/按钮>

React钩子是一种新的方法(仍在开发中),可以访问React的核心功能,如状态,而不必使用类。在您的示例中,如果您希望直接在处理函数中增加计数器,而不直接在onClick属性中指定它,您可以执行以下操作:

。。。
const[count,setCounter]=useState(0);
const[moreStuff,setMoreStuff]=useState(…);
...
常量setCount=()=>{
设置计数器(计数+1);
setMoreStuff(…);
...
};

和onClick:

<按钮onClick={setCount}>
点击我
&lt/按钮>

让我们快速解释一下这一行发生了什么:

const[count,setCounter]=useState(0);

useState(0)返回一个元组,其中第一个参数count是计数器的当前状态,setCounter是允许我们更新计数器状态的方法。我们可以使用setCounter方法在任何地方更新count的状态-在这种情况下,我们在setCount函数中使用它,在这里我们可以做更多的事情;使用钩子的想法是,如果不希望/需要,我们可以使代码更具功能性,并避免使用基于类的组件

我用多个例子(包括计数器)写了一篇关于钩子的完整文章,比如这个代码笔,我使用了useStateuseffectuseContext,以及自定义钩子。我可以更详细地了解钩子是如何在这个答案上工作的,但是文档非常详细地解释了状态钩子和其他钩子,希望能有所帮助

更新:钩子不再是一个建议,因为版本16.8现在可以使用,React的网站上有一个部分回答了一些常见问题

发表评论