Redux - 动作

根据 Redux 官方文档,动作是存储的唯一信息源。 它携带来自应用程序的信息负载进行存储。

如前所述,操作是纯 JavaScript 对象,必须具有 type 属性来指示所执行操作的类型。 它告诉我们发生了什么。 类型应在应用程序中定义为字符串常量,如下所示 −

const ITEMS_REQUEST = 'ITEMS_REQUEST';

除了这个类型属性之外,动作对象的结构完全取决于开发人员。 建议让您的操作对象尽可能简单并仅传递必要的信息。

要在store中进行任何更改,您需要首先使用 store.dispatch() 函数调度一个操作。 动作对象如下 −

{ type: GET_ORDER_STATUS , payload: {orderId,userId } }
{ type: GET_WISHLIST_ITEMS, payload: userId }

动作创建器

动作创建器是封装动作对象创建过程的函数。 这些函数只是返回一个普通的 Js 对象,它是一个动作。 它促进编写干净的代码并有助于实现可重用性。

让我们了解操作创建器,它允许您调度一个操作,"ITEMS_REQUEST",该操作从服务器请求产品项目列表数据。 同时,在"ITEMS_REQUEST"操作类型的reducer中,isLoading状态为true,表示项目正在加载,但仍未从服务器接收到数据。

最初,假设没有加载任何内容,initialState 对象中的 isLoading 状态为 false。 当浏览器接收到数据时,相应reducer中的"ITEMS_REQUEST_SUCCESS"操作类型中的 isLoading 状态将返回 false。 此状态可以用作反应组件中的道具,以在请求数据时在页面上显示加载程序/消息。 动作创建者如下 −

const ITEMS_REQUEST = ‘ITEMS_REQUEST’ ;
const ITEMS_REQUEST_SUCCESS = ‘ITEMS_REQUEST_SUCCESS’ ;
export function itemsRequest(bool,startIndex,endIndex) {
   let payload = {
      isLoading: bool,
      startIndex,
      endIndex
   }
   return {
      type: ITEMS_REQUEST,
      payload
   }
}
export function itemsRequestSuccess(bool) {
   return {
      type: ITEMS_REQUEST_SUCCESS,
      isLoading: bool,
   }
}

要调用调度函数,您需要将操作作为参数传递给调度函数。

dispatch(itemsRequest(true,1, 20));
dispatch(itemsRequestSuccess(false));

您可以直接使用 store.dispatch() 来调度操作。 但是,您更有可能使用名为 connect() 的 React-Redux 辅助方法来访问它。 您还可以使用 bindActionCreators() 方法将多个动作创建者与调度函数绑定。