核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构

    1. state: {
    2. name: 'ronffy',
    3. age: 30
    4. }
    5. // 用immer更新state
    6. import produce from "immer";
    7. //代码量更少,也较清晰
    8. this.setState(produce(draft => {
    9. draft.age++;
    10. }))
    11. // 常规的操作
    12. this.setState(prevState => ({
    13. age: prevState.age + 1
    14. }))
    15. // immer优化reducer
    16. const reducer = (state, action) => produce(state, draft => {
    17. draft.age++;
    18. })
    19. const reducer = produce((draft, action) => {
    20. draft.age++;
    21. })