刚接触 React 的时候就有些不太理解useReducer
的用法,总感觉用起来比useState
还要繁琐,而且有些不够直观,所以基本上也没有使用过。最近看了新版的 React 官网文档过后发现,甚至官方直接在文档里以留做习题的形式给出了一个用useState
来实现的useReducer
:
import { useState } from 'react'; export function useReducer(reducer, initialState) { const [state, setState] = useState(initialState); function dispatch(action) { const nextState = reducer(state, action); setState(nextState); } return [state, dispatch]; }
所以useReducer
就是简单封装过的useState
吗?有什么单用useState
做不到的事情吗?实际在开发中面对一个组件有多个参数状态需要分别控制的时候是使用一组useState
比较多还是一个对象然后用useReducer
来控制不同字段比较多?
![]() | 1 zonghow 2024-01-29 17:51:10 +08:00 CQRS |
![]() | 2 codehz 2024-01-30 10:05:17 +08:00 via iPhone 最大的区别就是 dispatch 函数始终保持固定的引用,但却能始终保证调用到最新的 reducer 函数,这意味着它作为参数传递给别的组件( memo 过的)不会导致 rerender ,当然 useState 返回的 dispatch 函数也是固定的,但它不能包含自定义逻辑 与其说用 useState 实现 useReducer ,不如说 useReducer 可以实现 useState ,当然为了效率 react 实际上不会这么做 |
4 lianggggg 2024-01-30 10:52:31 +08:00 你恰好说反了 |