vue.js - Vue:拥有依赖于 Vuex 存储属性的组件的最佳 Vuex 实践
问题描述
在这个简单组件的示例中,如果模板需要一个属性来渲染,该属性将是 Vuex 存储的数据,那么直接从属性中读取是否更好,如下所示:
<template>
<div>
<div>
{{ this.$store.getters.getProduct.title }}
</div>
<div>
{{ this.$store.getters.getProduct.name }}
</div>
</div>
</template>
或者将初始数据值设置为存储值并像这样使用:
<template>
<div>
<div>
{{ this.currentProduct.title }}
</div>
<div>
{{ this.currentProduct.name }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
currentProduct: this.$store.getters.getProduct
}
}
}
</script>
解决方案
您可以使用mapState
Vuex 并将其传播到组件的计算属性中以直接获取状态。考虑到您currentProduct
的商店中有一个状态...
<template>
<div>
<div>{{ currentProduct.title }}</div>
<div>{{ currentProduct.name }}</div>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
...
computed: {
...mapState(['currentProduct']).
}
}
</script>
如果您想从您的状态转换一些数据,只需使用 getter。https://vuex.vuejs.org/guide/getters.html
推荐阅读
- java - Java:上次运行后如何结束“do while”循环
- javascript - 后路由测试失败
- c - 我不明白这个哈希函数代码
- java - 为什么从 JDK 8 开始,本地内部类(方法内部)可以访问封闭方法的非最终局部变量?
- python - 如何在 PyQt5 中制作像 WhatsApp/YouTube 这样的视频播放器?
- python - 如何直接总结使用python多处理获得的结果而不返回所有单个结果以节省内存?
- reactjs - 在 React 中识别浏览器的屏幕尺寸后如何重定向到路由?
- vue.js - 如何为电子应用程序创建“始终位于顶部的组件”
- c# - 在 http.get 中将嵌套对象作为参数发送
- reactjs - 为什么 setState 在这种情况下在 NextJS 中不起作用?