反应自定义钩子以返回对象

时间:2019-10-27 17:01:20

标签: reactjs

我想从自定义的React Hook( useMyHook )返回一个对象:

const [ obj, setState ] = useState({a: {}, b: false});
...
setState({a:{toy: "Buzz"}, b:true});
return {obj}

在“功能”组件中:

const {a, b} = useMyHook();

useEffect(() => {   
      ...     
}, [a.toy])

然后,出现以下错误:

TypeError: Cannot read property 'toy' of undefined

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

return {obj}

这使您返回一个看起来像这样的对象:

{
  obj: {
    a: { toy: "Buzz" },
    b: true,
  }
}

外部对象没有a属性,只有obj属性,因此当您进行const {a, b} = useMyHook();时,ab是未定义的。

相反,您显然想做return obj;