Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Vue.js 两个vue组件调用相同的API函数_Vue.js_Vuex - Fatal编程技术网

Vue.js 两个vue组件调用相同的API函数

Vue.js 两个vue组件调用相同的API函数,vue.js,vuex,Vue.js,Vuex,我在同一父组件上有两个组件实例,该子组件在创建的生命周期挂钩中进行API调用,以填充下拉列表。子对象的两个实例的列表数据将相同 所以结果是,当我的父组件被加载时,我实际上调用了两次API,这是不必要的 我的问题是,如果我只想调用一次API,我应该将API调用移动到父级并将下拉列表项传递给子级,还是使用vuex并让父级调用调用API的操作。然后,该操作将项目保存到状态,子组件将通过存储getter访问项目 我很想使用vuex存储,因为列表很小,并且可能需要当前父级以外的其他位置 如果需要将相同的数

我在同一父组件上有两个组件实例,该子组件在创建的生命周期挂钩中进行API调用,以填充下拉列表。子对象的两个实例的列表数据将相同

所以结果是,当我的父组件被加载时,我实际上调用了两次API,这是不必要的

我的问题是,如果我只想调用一次API,我应该将API调用移动到父级并将下拉列表项传递给子级,还是使用vuex并让父级调用调用API的操作。然后,该操作将项目保存到状态,子组件将通过存储getter访问项目


我很想使用vuex存储,因为列表很小,并且可能需要当前父级以外的其他位置

如果需要将相同的数据呈现给多个组件,则应使用Vuex store。Vuex store在初始设置级别增加了代码复杂性,但在多个组件中使用API数据非常简单和轻松。这并不意味着在每个应用程序中都要使用Vuex存储。如果您开发的应用程序本质上是渐进式的,并且将来会变得更加复杂,那么就开始使用Vuex store。这将有助于你今后的发展。以下是所有详细信息。

TLDR

  • 如果要在父->子关系之外使用它,请使用Vuex

  • 如果您知道它将是简单和小的,那么将其作为道具传递也同样有效,并降低了建立商店的复杂性

  • 另一种选择是将其存储在localStorage中,但这可能不如您所希望的可靠,因为清除缓存的人将丢失下拉列表的功能

您可以将其存储在Vuex存储中,使其可以在应用程序中的任何位置持久化。但是,如果父级正在获取列表,并且它只需要将下拉列表传递给子级,您也可以在子级中创建一个道具,然后以这种方式传递下拉列表

孩子们将可以访问下拉列表项,您不需要为一个小应用程序中的简单下拉列表添加Vuex的复杂性

您提到的列表不是很大,如果下拉列表不是用户每次都需要单击或使用的,那么将其作为两个API调用并不一定不好。您可以在他们尝试访问下拉列表时加载数据,在某些情况下,这可以为您和客户节省在不需要时请求下拉列表的带宽