vue在项目进入前调取接口
时间: 2024-10-19 11:06:56 浏览: 20
Vue在项目启动前(即在路由挂载之前)调取接口通常用于获取初始数据或者做一些全局设置。这可以通过JavaScript的生命周期钩子函数`beforeCreate()`、`created()`或者Vuex store的`async beforeEach()`来实现。
1. `beforeCreate()`:这个钩子在实例创建完成但挂载开始之前调用,可以在这个时候发送初始化请求。
```javascript
export default {
data() {
return {
initialData: {}
};
},
beforeCreate() {
axios.get('/api/initial-data').then(response => {
this.initialData = response.data;
});
}
};
```
2. `created()`:如果需要的数据依赖于组件本身的数据,那么可以在`created()`钩子中调用,此时组件已经完全创建了。
```javascript
export default {
created() {
this.getData();
},
methods: {
getData() {
axios.get('/api/initial-data')
.then(response => (this.initialData = response.data));
}
}
};
```
3. Vuex store:如果你正在使用状态管理库Vuex,可以在store的action中异步加载数据,并在`async beforeEach()`钩子中触发它,确保在整个应用中只加载一次。
```javascript
import { mapState } from 'vuex';
export const actions = {
async fetchData({ commit }) {
await axios.get('/api/initial-data');
commit('setInitialData', response.data);
}
};
const getters = mapState(['initialData']);
export default {
computed: getters,
beforeCreate() {
this.fetchData();
}
};
```
阅读全文