Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在React组件中使用redux操作类型_Reactjs_Redux_React Redux - Fatal编程技术网

Reactjs 在React组件中使用redux操作类型

Reactjs 在React组件中使用redux操作类型,reactjs,redux,react-redux,Reactjs,Redux,React Redux,假设我有以下代码: switch (action.type) { case "GET_LIST": // update state break; case "GET_LIST_SUCCESS": // update state break; case "GET_LIST_ERROR": // update state break; default: re

假设我有以下代码:

switch (action.type) {
    case "GET_LIST":
        // update state
        break;
    case "GET_LIST_SUCCESS":
        // update state
        break;
    case "GET_LIST_ERROR":
        // update state
        break;
    default:
        return state;
}
在此之前,我已经设置了一些动作创建者(使用thunk中间件处理异步请求)。因此,流程可能是
GET\u LIST>GET\u LIST\u SUCCESS
GET\u LIST>GET\u LIST\u ERROR

现在在我的React组件中,我想根据最终调度的操作类型(成功或错误)来执行一些操作

使用动作类型本身是一种好的做法,还是我应该只针对我的条件使用存储状态?在这个例子中,我的商店将有一个
error
属性,我可以用它来检测是否有错误

所以它是(使用动作类型):

或(使用存储状态)


这是一个更好的实践,为什么?

我的观点是,使用Redux比以组件状态存储数据的优势在于,您将如何处理数据更新的问题从视图层(React)分离到Redux;React组件应该只知道数据是否已更改,而不知道它是如何更改的。这将使前端中的数据层和视图层解耦,在需要执行一系列操作以更新状态(例如,从API获取)时非常有用

如果您想将当前Redux操作类型公开给React组件,您必须在应用程序中的某个位置记录该操作,因为我认为Redux不会将当前操作公开给view层。此外,这也暴露了太多关于Redux如何处理数据流的信息


通常的做法是以布尔值和错误日志形式保存抓取状态,例如,
isFetching
fetchListError
,在抓取过程中更新这些值,并将这些值传递给查看层进行显示

这只是我的观点,但使用Redux比以组件状态存储数据的一个优点是,您可以将如何处理数据更新的问题从视图层(React)分离到Redux;React组件应该只知道数据是否已更改,而不知道它是如何更改的。这将使前端中的数据层和视图层解耦,在需要执行一系列操作以更新状态(例如,从API获取)时非常有用

如果您想将当前Redux操作类型公开给React组件,您必须在应用程序中的某个位置记录该操作,因为我认为Redux不会将当前操作公开给view层。此外,这也暴露了太多关于Redux如何处理数据流的信息


通常的做法是以布尔值和错误日志形式保存抓取状态,例如,
isFetching
fetchListError
,在抓取过程中更新这些值,并将这些值传递给查看层进行显示

据我所知,我们有带组件的react应用程序和带商店的redux应用程序。我们使用 另一个库react redux绑定react app和redux app。React-redux帮助在React组件中使用redux存储状态,并帮助从React组件向redux存储分派操作

为了处理像Redux thunk这样的异步操作库,根据异步操作的结果,这些库会分派操作


回答您的问题:React不知道在Redux存储中调度了哪个操作,因为它是由thunk中间件处理的。但是使用React-redux,React可以知道thunk中间件发送操作后的当前redux存储状态。所以我认为你应该选择第二种选择。第一个选项可能是可能的,但它需要大量的黑客攻击,而不仅仅是使用第一个选项。

据我所知,我们有react应用程序和组件以及redux应用程序和store。我们使用 另一个库react redux绑定react app和redux app。React-redux帮助在React组件中使用redux存储状态,并帮助从React组件向redux存储分派操作

为了处理像Redux thunk这样的异步操作库,根据异步操作的结果,这些库会分派操作


回答您的问题:React不知道在Redux存储中调度了哪个操作,因为它是由thunk中间件处理的。但是使用React-redux,React可以知道thunk中间件发送操作后的当前redux存储状态。所以我认为你应该选择第二种选择。第一个选项可能是可行的,但它需要大量的黑客攻击,而不仅仅是使用第一个选项。

我会在redux中使用一个属性来设置成功和失败,在组件中,我会检查redux属性和列表长度(如果请求成功且返回的列表为空怎么办)我将在redux中使用一个属性来设置成功和失败,在组件中,我将检查redux属性和列表长度(如果请求成功,列表返回为null怎么办)
if (actiontype === "GET_LIST_SUCCESS") {
  // do something
}
if (this.props.list.length > 0) {
  // do something
}