【发布时间】:2018-10-09 13:42:12
【问题描述】:
我正在尝试渲染 209,579 个选项,但我认为我没有正确使用 Vuex 生命周期 + axios
- 我看到所有选项都通过 Vuex 在控制台中设置为商店状态。
- 不显示错误
- 选项为空且不呈现状态
cityNamesarray -
main.js正在将 store 导出到所有组件
我认为我没有正确应用这个生命周期,我应该在这里使用 getter,有人可以为我的生命周期带来秩序吗?
store.js
import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
isTrue: true,
cityNames: [],
},
getters:{
getCityNames(state){
return state.cityNames;
}
},
mutations: {
SetCityNames(state, cityNames){
state.cityNames = cityNames
},
actions: {
loadData({commit}){
axios.get('http://localhost:3000/allCities')
.then(function (response) {
commit('SetCityNames', response.data)
}).catch(function (error) {
console.log(error);
});
}
},
});
脚本
export default {
name: "Weather",
methods: {
allCityNames() {
this.$store.dispatch('loadData')
}
},
created() {
this.allCityNames();
}
}
模板
<select>
<option disabled value="">Please select one</option>
<option v-for="cityName in $store.cityNames">{{cityName}}</option>
</select>
谢谢, 芽
【问题讨论】:
-
看起来不错,但可能没有正确检测到数据的变化。也许试试
state.cityNames = [...cityNames]