我在同一父组件上有两个组件实例,这个子组件在创建的生命周期钩子中进行 API 调用以填充下拉列表。子实例的两个实例的列表数据将相同。
所以结果是,当我的父组件加载时,我实际上调用了 API 两次,这是不必要的。
我的问题是,我是否只想调用一次 API,我应该将 API 调用移动到父级并将下拉列表项传递给子项,还是使用 vuex 并让父级调用调用 API 的操作。然后,该操作会将项目保存到状态,子组件将通过商店 getter 访问项目。
我很想使用 vuex 商店,因为列表很小,可能需要当前父级以外的其他地方。
TLDR;
-
如果你想在父>子关系之外使用它,请使用 Vuex
-
如果您知道它会简单而小巧,那么将其作为道具传递下来也可以工作,并降低设置商店的复杂性。
-
另一种选择是将其存储在 localStorage 中,但这可能不如您想要的那么可靠,因为清除缓存的人将失去下拉列表的功能。
你可以把它存储在 Vuex 存储中,允许它在应用程序中的任何位置持久化,但是,如果父级正在获取列表并且它只需要将下拉列表传递给子级,你也可以在子级中创建一个 Prop 并以这种方式传递下拉列表。
孩子们将可以访问下拉项,您无需为小应用程序中的简单下拉列表添加 Vuex 的复杂性?
您提到列表不是很大,如果下拉列表不是用户每次都需要单击或使用的内容,那么将其作为两个 API 调用并不一定是坏事。您可以在他们尝试访问下拉列表时加载数据,在某些情况下,这可能会为您和客户节省在不需要时请求下拉列表的带宽。
如果需要将相同的数据渲染到多个组件,您应该使用 Vuex 存储。Vuex 存储增加了初始设置级别的代码复杂性,但事后记,在多个组件中使用 API 数据是如此简单和轻松。这并不意味着在每个应用程序中使用 Vuex 存储。如果您正在开发本质上是渐进式的应用程序,并且将来会变得更加复杂,那么开始使用 Vuex 商店。它将在未来的发展中为您提供帮助。这是所有 Vuex 商店的详细信息。