自定义hook 自动合并state对象

function useObjectState(initObj) {
  //初始state只会在首次渲染时起到作用
  //在后续的渲染中 useState 永远返回的是最新的值 传递给组件
  //然后把相关的state组合成几个独立state变量时,组件就会更加的可读
  const [obj, setObj] = useState(initObj);
  const setMargeObj = x => {
    typeof x == 'function' ? setObj((obj) => ({ ...obj, ...x(obj) })) : setObj((obj) => ({ ...obj, ...x }))

  }
  console.log(obj)
  return [obj, setMargeObj]
}

 

posted @ 2023-06-28 14:51  飞奔的龟龟  阅读(12)  评论(0)    收藏  举报