一篇你能理解的 Redux 简介,祝你拥有美好的一天😃!太棒了👏🏻

2025-05-25

你能理解的 Redux 简介

祝你有美好的一天😃!

很棒的家伙

👏🏻

嗨,大家好!

在撰写本文时,Redux
是最流行的状态管理库。 部分原因是它主要与最流行的框架React一起使用。

那么Redux是什么?它是一个用于 JavaScript 应用程序的可预测状态管理库。它在我们的应用程序中实现了单向流。它基于Facebook 的 Flux(一种用于构建客户端应用程序的应用程序架构),但有一些不同。它可以用于客户端(前端)、服务器端(后端)或移动原生应用程序。

那么什么是状态管理?显然,它指的是我们如何管理应用中的状态或数据。由于我们的 UI 或视图依赖于状态或数据,因此我们的状态管理必须易于实现且易于理解。

那么什么是单向流?这意味着我们的应用程序数据将遵循单向绑定数据流。请看下面这张图。 我们不能直接UI进入Reducer ,我们必须先触发一个Action ,或者将Action发送Store ,然后才能到达Reducer,这就是单向流,意味着整个过程是单向的。
Redux 流

Redux 主要概念

Store -人们有时会混淆StoreState这两个词,以为它们是同一个东西,但事实并非如此。State是我们的应用数据,而Store是保存State 的容器,它有一些与 State 交互的必要方法。

Action - 我们更新或更改状态的唯一方法是通过action。基本上,它是一个对象,它告诉Reducer函数我们想要在State中进行哪些更改。Action 中唯一必需的属性type属性。

    // Sample Action without data
    const toggleAction = {
       type : 'TOGGLE_MODAL'
    };

    //Sample Action with data
    const updateAction = {
       type :'UPDATE_DATA',
       payload : {
          datas: []
       }
    }
Enter fullscreen mode Exit fullscreen mode

如果你在不同的组件中使用它,并且意识到你到处都在重复这段代码,那么我们最好创建返回这些对象的函数,并创建常量动作类型,这样就可以避免动作类型的拼写错误。
这些函数称为动作创建器 (Action Creator),类型称为常量动作类型 (Constact Action Types)

   const types = {
       TOGGLE_MODAL : 'TOGGLE_MODAL',
       UPDATE_DATA : 'UPDATE_DATA'
   };

   const toggle = () => ( {type:types.TOGGLE_MODAL} );

   const updateData = (data) => ( {type:types.UPDATE_DATA, payload:data} );

Enter fullscreen mode Exit fullscreen mode

Reducer - 这是一个根据给定动作更新状态并返回新状态的函数。它是一个纯函数,这意味着该函数的返回值完全取决于传入的参数,它没有副作用,不会改变传入的参数,也不会访问其外部作用域中的任何变量。


    const types = {
       TOGGLE_MODAL: 'TOGGLE_MODAL',
       UPDATE_DATA: 'UPDATE_DATA'
    };

    const initState = { datas: [], isModalOpen: false };

    function reducer(state = initState, action) {
       switch (action.type) {
          case types.TOGGLE_MODAL:
            return { ...state, isModalOpen: !state.isModalOpen };
          case types.UPDATE_DATA:
            return { ...state, datas: action.payload };
          default:
            return state;
       }
     }

Enter fullscreen mode Exit fullscreen mode

这是一个减速器的示例模板,如果您的状态具有许多属性,那么
您可能有许多动作类型,那么也许是时候将它们分离到另一个文件中了。

我对这些概念有个类比。简单来说,旧状态就是你现在的车。商店就像洗车场减速器就像传送带,是一个供你穿梭的隧道。动作指的是传送带内部的任何装置,例如旋转刷干燥鼓风机向车辆喷洒高压水的高压拱门,或者传送带上发生的任何清洁过程。在传送带上完成所有过程后,你就得到了汽车的新状态

在某些情况下使用 Redux 可能有些过度,例如,如果您正在创建一个包含少量数据的应用程序,那么就不要使用 Redux,但如果您有一个包含大量数据的大型应用程序,那么 Redux可能是一个适合您的解决方案。

感谢大家阅读这篇文章。

祝你有美好的一天😃!

文章来源:https://dev.to/macmacky/an-intro-to-redux-that-you-can-understand-55k8
PREV
使用 Express 更好地使用 TypeScript
NEXT
JavaScript 面试问题及答案 70 个 JavaScript 面试问题