我在react钩子中有这样的状态
const category = useState(props.catid);
状态就像一个道具。当我将props.catid登录到控制台时,它只显示该值。但是当我记录类别时,它看起来是这样的
category state :
(2) […]
0: 102
1: dispatchAction()
length: 1
name: "bound dispatchAction"
<prototype>: function ()
length: 2
<prototype>: Array []
我只需要它的值,它也应该从道具更新。
发布于 2020-04-15 05:43:33
useState
钩子返回一个数组,第一个索引是状态值,第二个索引是更新状态的函数。常用语法如下:
const [category, setCategory] = useState(props.catid);
如果语法令人困惑,那就是array destructuring assignment。
如果只需要第一个值,则省略setter:
const [category] = useState(props.catid);
在这一点上,我将只做一个评论,状态现在真的没有用了,你应该只使用属性catid
。
发布于 2020-04-15 05:48:38
由于您实际上记录了state的返回值,因此您将看到整个对象及其原型
通常,useState返回一个包含2个元素的数组。第一个元素是状态值,第二个值是useState的设置器。因为useState是通过useReducer
在内部实现的,所以setter实际上是一个dispatchAction
函数实例
useState返回数组的原因是,与对象解构不同,您可以任意解构和命名字段以及setter
你可以这样想上面的内容:
const categoryState = useState(props.catid);
const category = categoryState[0];
const setCategory = categoryState[1];
或者简单地说
const [category, setCategory] = useState(props.catid);
https://stackoverflow.com/questions/61221960
复制