如果我在App.vue中加载一个大型对象并将其提交给init存储,那么在父组件中执行mapStating并将该对象传递给子对象(在那里它将被迭代/使用/显示)更好,还是直接在使用对象的子组件中mapState对象更好?
跟进..。这两种方法之一是改变someBigArray的可用性吗?我发现我总是必须深入观察mapStated对象,并在变化时将它们分配给本地data()变量,这就像是一次黑客攻击。
// state.someBigArray
// ---------------------------------------> parent
<template>
<Child :the-object="someBigArray"/>
</template>
computed: mapState(["someBigArray"]),
// ---------------------------------------> child
<template>
<div v-for="item in someBigArray">
{{ item.name }}
</div>
</template>
<script>
export default {
props: {
locations: {
type: Array,
required: true,
default: () => [],
},
}发布于 2020-08-08 23:50:34
根据您的具体情况,您可以从Vuex那里获得数据。但是如果您的子组件是一个不应该进行任何计算的UI组件,那么我最好用道具传递所有数据,不管它有多大。
此外,您可以通过为您的数据创建一个getter并在组件的mapGetters部分中使用computed来避免此类攻击。我发现使用mapState有点不安全,所以我更喜欢使用mapGetters。
更新
实际上,Vuex 鼓励使用mapState,因此,如果您不需要以某种方式修改数据,那么getter似乎是不必要的。
https://stackoverflow.com/questions/63321126
复制相似问题