vue.js - Vue组件上的两种数据流
问题描述
我希望在更新 Vuex 中的存储值时更新 Vue 组件中的选择器。这是 vue 组件的简化版本:
<template>
<v-autocomplete
outlined
dense
v-model="team"
label="Select Team"
:items="teams"
item-text="name"
item-value="_id"
return-object
class="mx-3 mt-3"
@change="selectTeam"
></v-autocomplete>
</template>
JS:
<script>
export default {
name: 'NavDrawer',
data() {
return {
team: null,
teams: [],
};
},
async created() {
this.team = this.$store.getters['teams/allTeams'].find(
(t) => t.name === this.$route.params.team,
);
this.teams = this.$store.getters['teams/allTeams'];
},
methods: {
async selectTeam() {
if (this.team) {
await this.$store.dispatch('editTeam/selectTeam', this.team);
this.$router.push(`/team/${this.team.name}`);
} else {
this.$router.push('/');
}
},
},
};
</script>
还有 Vuex 商店:
export default {
namespaced: true,
state: () => ({
editedTeam: {},
}),
mutations: {
selectTeam(state, team) {
state.editedTeam = team;
},
resetTeam(state) {
state.editedTeam = {};
},
},
actions: {
selectTeam({ commit }, team) {
commit('selectTeam', team);
},
resetTeam({ commit }) {
commit('resetTeam');
},
},
getters: {
getSelectedTeam: (state) => state.editedTeam,
},
};
我不确定它是否重要,但是这个 vuex 存储被传递到一个索引文件中以创建 Vuex.Store——这工作正常,不是问题。
当在应用程序的其他位置选择新的editedTeam 时,我希望存储在editedTeam 中的团队能够反应性地更新在v-autocomplete 组件中选择的团队。我希望 v-autocomplete 选择器在选择时将新团队发送到editedTeam。我认为我应该为此使用 mapState 并将它们存储为计算值——但我尝试过的任何方法都没有奏效。我发现 vuex 文档缺少很好的示例。
谢谢!
解决方案
推荐阅读
- php - 用每行的值更新孙中继器字段
- google-sheets - Google 表格中的合计等价物
- c# - WMI 类多显示器返回的 dpi 不正确 (Win32_DesktopMonitor)
- javascript - 故障:Google Drive API 上传缺少的内容
- apache-storm - 以编程方式暂停和重新启动拓扑中的 spout
- python - sqlalchemy 可以更新 where 语句使用 LIKE 吗?
- ios - 使用 appium 转储应用程序的 ui 层次结构
- angular - ngx-leaflet 不通过服务检测层更改(Angular 6)
- python - 从 python 中的 curl 命令获取输出。
- python - 熊猫逻辑与运算符给出错误