vue.js - 如何将一个组件用于不同的路径,并为此组件加载不同的数据?
问题描述
我有一个组件。
<template>
<HotTable :settings="hotSettings" ></HotTable>
</template>
<script>
import HotTable from "@handsontable/vue";
import Handsontable from "handsontable";
export default {
data() {
return {
hotSettings: {
data:
[
["", "Ford", "Volvo", "Toyota", "Honda"],
["2016", "10", 11, 12, 13],
["2017", 20, 11, 14, 13],
["2018", 30, 15, 12, 13]
],
rowHeaders: true,
colHeaders: true
}
};
},
components: {
HotTable
}
};
</script>
该组件以三种不同的方式显示:/path/path1
、/path/path2
、/path/path3
。我怎样才能做到这一点,当导航这些路径时,这个组件显示在每个页面上,但它的数据(data
字段)会不同?
最近建议props
在路线中使用。
我的组件
<template>
<HotTable :data="myData"></HotTable>
</template>
<script>
import HotTable from "@handsontable/vue";
import Handsontable from "handsontable";
export default {
data: function() {
return {}
};
},
props: ["myData"],
components: {
HotTable
}
};
</script>
<style src="handsontable/dist/handsontable.full.css"></style>
<style>
#hot-preview {
width: 600px;
height: 400px;
overflow: hidden;
}
</style>
路由文件
export default new Router({
routes: [{
path: '/tables/groups',
component: Table,
props: {
myData: [
["", "Ford", "Volvo", "Toyota", "Honda"],
["2016", 10, 11, 12, 13],
["2017", 20, 11, 14, 14],
["2018", 30, 15, 12, 15]
]
},
},
{
path: '/tables/subjects',
component: Table,
props: {
myData: [
["", "Ford", "Volvo", "Toyota", "Honda"],
["2016", 10, 11, 12, 15],
["2017", 20, 11, 14, 14],
["2018", 30, 15, 12, 13]
]
},
},
],
})
该解决方案有效,但我需要动态获取表的数据,因此我使用的是商店。如何将商店与此构造相关联?
文件store.js
export const store = new Vuex.Store({
state: {
groupsTableData: [],
},
actions: {
loadGroupsTableData({commit}) {
axios
.get("/api/tables/groups")
.then((response) => {
commit("SET_GROUPS_TABLE_DATA", response.data);
console.log(response);
})
.catch((error) => {
console.log(error);
});
},
},
mutations: {
SET_GROUPS_TABLE_DATA(state, data) {
state.groupsTableData = data;
},
},
getters: {
groupsTableData: state => {
return state.groupsTableData
}
}
})
解决方案
推荐阅读
- node.js - Sequelize:isNewRecord 总是假的
- firebase - 从 watchOs 6 独立应用程序更新 Firebase
- linux - 获取 nginx 运行状态为 bool
- angular - Angular 9.1.3 中primeng 9.1.2 的p-dialog 直接显示在我的组件上,而不是覆盖
- powershell - 使用 BitTransfer 下载文件不起作用
- r - 如何在 R 中为线性回归选择数值列
- lingo - LINGO/LINDO 编码(整数线性规划)
- mode - 有什么技巧可以启动偏置模式吗?
- json - 如何快速将所有电话联系人传递给 JSON API
- string - 在Typescript中第n次出现char之后和第n+n次出现char之前拆分字符串