从另一个函数调用一个功能更新-组合useState-s是否正常?

时间:2020-06-19 21:50:49

标签: react-hooks

这种set*嵌套有什么缺点吗?:

const [foo,setFoo] = useState(0)
const [bar,setBar] = useState([])
...{
   setFoo(lastFoo=>{
      if(lastFoo>0)
         setBar(lastBar=>{
            ...
            return [...lastBar,lastFoo]
         })
      return 0
   })
}

useState -s是自定义钩子的一部分时,这很有用, 并且我们可以获得不错的钩子组成。

const handleBar = useBarSync() // with state
...
   setFoo(lastFoo=>{
      handleBar(lastFoo)
      return 0
   })

另一方面,最好使用单个useStateuseReducer管理复杂状态, 更新是原子的,似乎更可靠。

const [state,setState] = useState({foo:0,bar:[]})
const handleBar = useBarSync() // no state
...
   setState(last=>{
      const foo = 0
      const bar = handleBar(last.foo)(last.bar)
      return ({foo,bar})
   })

但是同时具有钩子组成和状态组成 似乎很冗长,可读性较差。

0 个答案:

没有答案