Redux - 动作


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

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

const ITEMS_REQUEST = 'ITEMS_REQUEST';

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

要在商店中进行任何更改,您需要首先使用 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 。当浏览器接收到数据时,相应减速器中的“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()方法将多个动作创建者与调度函数绑定。