uniapp vuex数据持久化 代码
时间: 2024-01-31 17:03:19 浏览: 120
以下是在uniapp中使用vuex实现数据持久化的代码示例:
1. 在store文件夹中创建index.js文件,并在其中创建vuex的store实例:
```javascript
// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
id: null // 初始化id为null
},
mutations: {
setId(state, id) {
state.id = id
}
},
actions: {
loginApi({ commit }, data) {
// 处理登录逻辑
// 登录成功后将id存入vuex的state中
commit('setId', data.id)
}
},
plugins: [
(store) => {
// 监听state的变化,当state发生变化时将state存入本地缓存
store.subscribe((mutation, state) => {
uni.setStorageSync('vuex_state', state)
})
}
]
})
export default store
```
2. 在需要获取持久化数据的地方(比如登录页),使用`this.$store.dispatch`方法触发action来处理登录逻辑,并在登录成功后跳转到其他页面:
```javascript
// Login.vue
export default {
methods: {
login() {
this.$store.dispatch('loginApi', data).then(res => {
uni.reLaunch({ url: '/pages/index/index' })
})
}
}
}
```
3. 在需要使用持久化数据的地方(比如个人主页),使用`mapState`辅助函数将vuex的state映射到组件的computed属性中,然后在模板中使用该属性:
```vue
<template>
<view>
<text>{{ id }}</text>
</view>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['id'])
}
}
</script>
```
阅读全文