Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 错误和加载是否应存储在存储区或状态中?_Reactjs_Redux - Fatal编程技术网

Reactjs 错误和加载是否应存储在存储区或状态中?

Reactjs 错误和加载是否应存储在存储区或状态中?,reactjs,redux,Reactjs,Redux,我在试图找出应该在哪里存储加载或错误状态之类的内容时遇到了问题 假设我有一个react组件,它从挂载的服务器获取数据。我所做的是调度一个动作获取一些数据,该动作将通过中间件处理异步部分,中间件反过来将根据异步请求的结果调度获取一些数据或获取一些数据 现在,我想做的是在获取数据时向用户显示一些事情正在发生,所以我需要一些东西,让我知道正在加载一些东西。我想我可以让一个reducer对我的获取一些数据操作做出反应,并更新我的存储以切换isLoading值,但这就是我遇到的问题:对我来说,这不应该在存

我在试图找出应该在哪里存储加载或错误状态之类的内容时遇到了问题

假设我有一个react组件,它从挂载的服务器获取数据。我所做的是调度一个动作
获取一些数据
,该动作将通过中间件处理异步部分,中间件反过来将根据异步请求的结果调度
获取一些数据
获取一些数据

现在,我想做的是在获取数据时向用户显示一些事情正在发生,所以我需要一些东西,让我知道正在加载一些东西。我想我可以让一个reducer对我的
获取一些数据
操作做出反应,并更新我的存储以切换
isLoading
值,但这就是我遇到的问题:对我来说,这不应该在存储中,而是在组件的状态中

我想这可能很奇怪,所以原因如下:假设我正在显示博客的最后5篇文章和整个列表(分页),如果用户在我的整个列表中单击“查看更多文章”,我不希望这两篇文章都显示加载器

错误也是一样,真的。假设我的新闻获取失败了。我不希望两个组件都显示错误。它们应该是独立的——每个组件都应该尝试获取其数据,并相应地对错误做出反应

我希望我说的很清楚。。。我想我对这个问题有很强的看法,但每个人的想法似乎都不一样,但我不明白为什么。希望你们能给我解释一下在哪里存储“临时数据”以及为什么


谢谢

redux
redux
之一是你只有一个真理的来源。您的应用程序将只有一个状态,并且该状态由应用商店管理。您的状态不仅包含从服务器获取的数据,还包含有关UI当前状态的信息。因此,如果要为当前活动的异步请求呈现加载指示器,则此信息将存储在状态中,而不是存储在组件中。

无论您是获取帖子列表还是单独获取每篇帖子,您的存储区都有责任反映所发生的情况。如果在获取数据时出现错误,您可以在post列表中或在每个post项目上分别将“status”标志设置为“error”


组件有责任根据当前状态向用户显示某些内容。您的
PostList
组件可以从商店接收到一个prop
status
,并向最终用户显示一些有用的信息。每个帖子也是如此,它们的一个可能的ui状态是错误状态,因此您应该有一个为组件定义此ui状态的道具,以便让他向最终用户显示错误。

老实说,组件有自己的状态是有原因的。如果您正在请求某些内容,您可以在本地设置一个状态,该状态显示一些加载视图以及请求何时到达(您将知道,因为包含请求数据的道具将被填充)您可以将状态设置回不显示加载。但我认为我的问题是,我无法将
isLoading
errors
数据视为应用程序状态的一部分。对我来说,这几乎只是临时显示数据/