我正在运行 PHP 后端,并且已经拥有了我想要在 Vuex 存储中设置的必要数据。通常,如果我已经有了这些数据并且只需要在组件中使用它,我只需 html_encode
和 json_encode
该数据并将其作为 prop 传递。
这要求我不必对我 View 中已有的数据进行 API 调用。
目前我正在考虑做这样的事情,但这感觉很丑陋,因为我在这里使用全局变量:
在我看来:
<script>
window.searchContext = {{ $searchContext }};
</script>
然后在我的主 Vue 实例所在的 app.js
中:
data: {
searchContext: window.searchContext
}
一旦我的主 Vue 实例中有数据,我就可以填写我的 Vuex 存储。通过使用类似的东西:
created() {
this.$store.commit('datepicker/arrival', this.searchContext.arrival);
this.$store.commit('datepicker/arrival', this.searchContext.arrival);
// etc.
}
是否有更好的模式来做这样的事情?我可能想得太多了,因为这可能工作得很好......
最佳答案
首先,你目前所做的一切都很好。它看起来很丑,但完全没问题。但是,一旦读取该数据,请从 window
对象中删除该数据。
您基本上想做的是SSR - 服务器端渲染。一旦开始预渲染重要数据,您应该切换到官方 SSR 解决方案。
但是做 SSR 需要 Node.js,而你目前有 PHP 后端。 SSR本身相当复杂,只有在需要时才选择它。它使构建堆栈变得复杂。
了解更多关于Vue SSR的信息.
关于javascript - 如何在不调用API的情况下设置Vuex数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51514763/