在前端开发中,API 及其返回数据通常需要经过处理和管理。redux-normalized-api-middleware 就是一款解决 API 数据处理和规范化的工具,能够有效地管理和规范前端项目的数据。
安装
使用 npm 进行安装:
--- ------- -------------------------------
使用方法
- 引入 redux-normalized-api-middleware:
------ ------------------- ---- ----------------------------------
- 传入一些配置项,返回一个中间件:
----- ------------- - --------------------- ---- -------------- -------- ------------------ ------- ------ ------ --------- -------- --------- ------- --------------- -- -------- ---
- 在 redux 中将该中间件注册到 applyMiddleware 中:
------ - ------------ --------------- - ---- -------- ----- ----- - ------------ ------------ ------------------------------ --
- 在 action 中调用中间件:
------ - ------------ - ---- ---------------- ------ ----- --------- - -------------------------- ------- -- --------- ------ ----- ------- - --------- -- ---------- -- - ----------------------------- --
上述代码中的 options 可以包含查询参数、请求体等信息,根据传入 options 发送不同的 API 请求。
- 在 reducer 中处理成功和失败的 action,并更新 state:
------ - ------------- - ---- ---------------- ----- ------------ - - ---------- ------ ----- --- ------ ----- -- ----- ------- - -------------- - ---------- ------- -- -- --------- ---------- ----- --- ---------- ------- - ------- -- -- -- --------- ---------- ------ ----- -------- ------ ----- --- ---------- ------- - ------- -- -- -- --------- ---------- ------ ----- --- ------ -------- --- -- ------------ --
深入探讨
- middleware 在整个 redux 中的位置
在 redux 经历 action → middleware → reducer 的流程时,middleware 就是中间过程的处理者。middleware 可以在不改变 action 的原始形式和 reducer 的处理逻辑的基础上,实现不同的业务需求,比如请求和处理 API 数据。
- 如何使用 reducer 处理 normalized data
createApiMiddleWare
方法中的 schema
参数可以用来对返回的数据进行规范化,这样的话在 reducer 中就可以更方便地处理经过规范化后的数据了。
例如,在 reducer 中存储的数据格式是:
----- ------------ - - ----- --- ------- --- --
那么希望获取的数据是这种格式:
- ------ - ------- ------ ------ --- --- -- ------ - ------- ------ ------ --- --- -- --- -
可以使用 normalizr 库将数据进行规范化:
------ - ------ - ---- ------------ ----- ---------- - --- ---------------------- --- - ------------ ---- --- ----- -------------- - --- ------------------------- ----- ------------- - --------------------- ---- -------------- -------- ------------------ ------- ------ ------ --------- -------- --------- ------- --------------- ---
schema
参数支持 normalizr 所支持的所有 schema 类型,可以实现更灵活的数据规范化。
示例代码
------ ------------------- ---- ---------------------------------- ------ - ------------ - ---- ---------------- ------ - ------------- - ---- ---------------- -- -- ------ -- ----- ----------- - -------------- ----- ------------------- - ---------------------- ----- ------------------- - ---------------------- -- -- --- -- ----- ---------- - --------------------------------------------- -- -- ---------- ----- --------------- - --------------------- ---- ----------- -------- - --------------- ------------------ -- ------- ------ ------ ------------- -------------------- --------------------- ------- --- --- -- -- ------ ----- ---------- - ------------------------- ------- -- --------- ----- -------- - --------- -- ---------- -- - ------------------------------ -- -- -- ------- ----- ------------ - - ---------- ------ ------ --- ------ ----- -- ----- ------- - -------------- - -------------- ------- -- -- --------- ---------- ----- --- ---------------------- ------- - ------- -- -- -- --------- ---------- ------ ------ -------- ------ ----- --- ---------------------- ------- - ------- -- -- -- --------- ---------- ------ ------ --- ------ -------- --- -- ------------ -- -- - ---------- --- --------------- - ----- ----- - ------------ -------- -------------------------------- -- -- ---- ---------------------------
结语
redux-normalized-api-middleware 可以有效地减少前端项目中 API 数据的重复处理,规范化数据的格式,在项目中大大提高了数据的处理和管理效率,值得开发人员掌握。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60067009e361a36e0bce8be2