Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 我们应该在组件和存储中使用axios吗?_Reactjs_Vue.js_Redux_Axios_Vuex - Fatal编程技术网

Reactjs 我们应该在组件和存储中使用axios吗?

Reactjs 我们应该在组件和存储中使用axios吗?,reactjs,vue.js,redux,axios,vuex,Reactjs,Vue.js,Redux,Axios,Vuex,我对使用store(Vuex或Redux)有点困惑。 首先,我们都知道两者都是为状态管理而生的,我们通常在通过其他组件修改组件状态时使用它们 然而,根据我的问题,我假设我们得到了组件A和B。场景是: 虽然其他组件需要使用B的状态,因此我们将在存储管理中存储此状态,如果B需要使用axios,我们也将其作为操作在存储文件中工作 接下来,对于组件A,不需要为全局使用设置其状态,但它仍然需要axios使用,因此-我们在组件A内部使用axios-是一种好的做法吗 对不起,我的英语不好,我知道:(对于组

我对使用store(Vuex或Redux)有点困惑。 首先,我们都知道两者都是为状态管理而生的,我们通常在通过其他组件修改组件状态时使用它们

然而,根据我的问题,我假设我们得到了组件A和B。场景是:

  • 虽然其他组件需要使用B的状态,因此我们将在存储管理中存储此状态,如果B需要使用
    axios
    ,我们也将其作为
    操作在存储文件中工作

  • 接下来,对于组件A,不需要为全局使用设置其状态,但它仍然需要
    axios
    使用,因此-我们在组件A内部使用
    axios
    -是一种好的做法吗


对不起,我的英语不好,我知道:(

对于组件B来说,这很简单。您可以调用
axios
(或任何其他数据获取模块)直接在组件中,然后通过操作负载将结果传递到存储中,只要应用程序开始增长和/或更改,就会变得复杂。太多模块直接相互了解是个坏主意

我建议遵循更传统的路径:在其操作中使
axios
成为Store使用的服务。这样,您的组件就可以与数据获取过程详细信息正确分离;它们只发出命令-操作-并从Store接收更新;只有Store知道如何正确执行这些命令


现在,对于组件A,正如您所说的,它的状态完全隔离,选择更广泛。我至少应该考虑使用与您的存储库相同的<代码> AXIOS < /代码>的实例——因为您可能需要以与组件B的情况相同的方式来配置和调试它。


尽管如此,我仍然可以想到在组件A中甚至应该隔离数据获取的用例——例如,如果组件A更接近于成为一个不同的应用程序。在这种情况下,共享数据提供程序可能会使流程复杂化。

是-如果组件A有自己的状态,而该状态从未在该组件外部使用过,那么在组件内部进行调用就可以了,但这有点违背了使用Redux这样的状态管理器的目的。我个人只想把它连接到Redux上,因为我可以跟踪和调试我的所有操作,但这只是我个人的原因。@SpencerBigum谢谢你的回复。这就是我想知道的,因为我认为只使用动作有点复杂。不过,我会考虑你的想法!谢谢你的回复,我这几天忙着回复。首先对不起。我的意见和你的一样。如果我们对A使用相同的组件B模式,它会使我们的应用程序现在有更多的工作要做。毫无疑问,对A应用B的方法可以帮助我们以一种方式对所有组件进行调试,但正如我所说的,还有更多的事情要做。