美文网首页React 重新学习前端技术
React 文档再学习 5 用 Reducer 抽取状态逻辑

React 文档再学习 5 用 Reducer 抽取状态逻辑

作者: 吴摩西 | 来源:发表于2022-11-26 11:35 被阅读0次

    useState, useReducer

    • 代码量, 一般情况下,useState 的代码量少一些。useReducer 因为要写 dispatch 和 reducer ,代码量会多一些,只有使用相似的访问、修改状态的方法的话,useReducer 的代码会少一些。
    • 可读性useState 更加易读。但是状态太多的时候,会让代码难以理解,此时 useReducer 可以把状态更新和事件响应隔离。
    • 调试,使用 useState 调试时,难以跟踪状态时如何更新的,使用 useReducer 可以在每个 action 里面添加 console.log ,跟踪状态更新状况。
    • 测试reducer 只是单纯的函数,可以进行单独测试。
    • 个人便好,有人喜欢 useState,有人喜欢 useReducer。其实本质上他们是等价的。

    良好的 useReducer

    • reducer 必须是纯函数,reducer 中不能发送 http 请求,订阅 setTimeout,产生副作用,即不能影响到组件外的世界。更新 Object 和 Array 时不能产生 mutation。
    • action 应该是单一职能,即使它更新了很多数据,举例来讲,如果一个 form 里有一个重置按钮,它应该只发送一个 action 来重置整个 form,而不是给 form 里面的各个表单项分别发送重置 action。

    reducer + context

    将 reducer / context 组织在一个文件中,export 对应的 状态和 dispatcher,从而方便状态的组织。

    相关文章

      网友评论

        本文标题:React 文档再学习 5 用 Reducer 抽取状态逻辑

        本文链接:https://www.haomeiwen.com/subject/okdaxdtx.html