vue 跳转到新页面时进行一次接口访问后,下次再进入此页面不再访问,怎么做?
时间: 2023-05-23 21:04:23 浏览: 235
A:可以将接口返回的数据存储在 vuex 中,在组件挂载时先判断数据是否已经存在,如果存在就直接使用,否则再进行一次接口访问。代码示例如下:
1. 在 vuex 中定义存储接口返回数据的 state:
```javascript
state: {
apiData: null
}
```
2. 在 actions 中定义获取接口数据的异步操作:
```javascript
getApiData({ commit }) {
return new Promise((resolve, reject) => {
// 进行接口访问,返回数据
axios.get('/api/data').then(res => {
commit('SET_API_DATA', res.data)
resolve(res.data)
}).catch(error => {
reject(error)
})
})
}
```
3. 在 mutations 中定义存储接口数据的方法:
```javascript
SET_API_DATA(state, data) {
state.apiData = data
}
```
4. 在组件中进行访问,在 mounted 钩子函数中判断数据是否存在,不存在则发起一次异步获取数据的操作:
```javascript
import { mapState, mapActions } from 'vuex'
export default {
// ...
computed: {
...mapState(['apiData'])
},
methods: {
...mapActions(['getApiData'])
},
mounted() {
if (!this.apiData) {
this.getApiData()
}
}
// ...
}
```