Redux - 动作 (Actions)
根据 Redux 官方文档,动作是存储的唯一信息来源。它承载着应用程序到存储的信息负载。
如前所述,动作是简单的 JavaScript 对象,必须具有 type 属性以指示执行的动作类型。它告诉我们发生了什么。类型应在您的应用程序中定义为字符串常量,如下所示:
const ITEMS_REQUEST = 'ITEMS_REQUEST';
除了这个 type 属性外,动作对象的结构完全取决于开发者。建议尽可能使您的动作对象轻量级,只传递必要的信息。
要使存储发生任何更改,您需要首先使用 store.dispatch() 函数分派一个动作。动作对象如下所示:
{ type: GET_ORDER_STATUS , payload: {orderId,userId } } { type: GET_WISHLIST_ITEMS, payload: userId }
动作创建器 (Actions Creators)
动作创建器是封装动作对象创建过程的函数。这些函数简单地返回一个简单的 Js 对象,即一个动作。它促进了编写干净的代码并有助于实现可重用性。
让我们了解一下动作创建器,它允许您分派一个动作 `'ITEMS_REQUEST'`,该动作请求从服务器请求产品项目列表数据。同时,在 `'ITEMS_REQUEST'` 动作类型中,reducer 中的 `isLoading` 状态设置为 true,以指示项目正在加载,并且尚未从服务器接收数据。
最初,在 `initialState` 对象中,`isLoading` 状态为 false,假设没有任何内容正在加载。当浏览器接收到数据时,在相应的 reducer 中的 `'ITEMS_REQUEST_SUCCESS'` 动作类型中,`isLoading` 状态将返回 false。此状态可用作 React 组件中的 prop,以便在请求数据期间在您的页面上显示加载程序/消息。动作创建器如下所示:
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 函数,您需要将 action 作为参数传递给 dispatch 函数。
dispatch(itemsRequest(true,1, 20)); dispatch(itemsRequestSuccess(false));
您可以直接使用 store.dispatch() 分派动作。但是,您更有可能使用名为 `connect()` 的 react-Redux 辅助方法访问它。您还可以使用 `bindActionCreators()` 方法将多个动作创建器与 dispatch 函数绑定。