useState返回的为什么是数组而不是对象

225 阅读1分钟

首先,const [count,setCount] = useState(0) 这种语法是ES6的解构赋值语法。 数组在解构赋值时,按照返回的顺序一一解构,并且可以重新命名:

const foo = [1,2,3]
const [a,b,c] = foo
//a=1,b=2,c=3

而对象在解构赋值时,必须和useState函数内部返回的对象的key同名:

const food = {
    drink:'coffee',
    snack:'chips'
};
const {drink,snack} = food;

这样的话,如果想再次使用这个函数,必须要重命名:

const {drink: drink1, snack: snack1} = food

因此数组形式相对来讲更方便。 但是返回数组也存在一些问题,比如必须要按照顺序解构,比如我只想用第二个返回值,那么就需要const [,setState] = useState()这样的方式来写了。

结论就是,如果参数大于2个,可以返回object,否则就返回数组。