vue3中如何在onMounted中获取的数据变成响应式数据并且保存到store里面并且修改该响应式数据时不受onMounted影响
时间: 2023-05-19 20:06:14 浏览: 147
Vue.js中provide/inject实现响应式数据更新的方法示例
你可以使用Vue3的reactive函数将数据变成响应式数据,然后使用Vuex的store来保存数据。在onMounted中获取数据后,将其赋值给reactive函数返回的对象即可。如果你想在修改响应式数据时不受onMounted影响,可以使用computed属性来获取响应式数据的副本,然后对副本进行修改。最后再将修改后的副本赋值给原始的响应式数据。以下是示例代码:
```
import { reactive } from 'vue'
import { useStore } from 'vuex'
export default {
setup() {
const store = useStore()
const data = reactive({
// 在这里定义你的数据
})
onMounted(() => {
// 在这里获取数据并将其赋值给data
data.xxx = xxx
// 将data保存到store中
store.commit('setData', data)
})
const computedData = computed(() => {
// 获取响应式数据的副本
return JSON.parse(JSON.stringify(data))
})
return {
data: computedData
}
}
}
```
在上面的代码中,我们使用了Vue3的reactive函数将数据变成了响应式数据,并使用Vuex的store来保存数据。在onMounted中获取数据后,将其赋值给reactive函数返回的对象data,并将data保存到store中。为了避免在修改响应式数据时受onMounted影响,我们使用了computed属性来获取响应式数据的副本,并对副本进行修改。最后再将修改后的副本赋值给原始的响应式数据。
阅读全文