vue.js 在pinia中存储React(参考)值

dl5txlt9  于 2022-12-04  发布在  Vue.js
关注(0)|答案(1)|浏览(228)

我有一个React值,我想存储在一个pinia商店。

const data = ref({});
async function loadData() {
  fetch("...")
    .then((res) => res.json())
    .then((json) => (data.value = json));
}
loadData();

const myDataStore = useMyDataStore();
const { myData } = storeToRefs(myDataStore);

// Here I want to store data in the store, reactively
myData.value = data.value;

但是当我这样做的时候,React性就失去了,你怎么把值存储在存储器里,这样每次data更新的时候myData也会更新?

56lgkhnf

56lgkhnf1#

您应该像这样定义您的商店:

import {defineStore} from 'pinia'

export const useMyDataStore = defineStore('myStore', {
    state: () => ({
        myData: {}
    }),
    actions: {
        update(value){
            Object.assign(this.myData, value);
        }
    }
})

然后使用像

const data = ref({});
async function loadData() {
  fetch("...")
    .then((res) => res.json())
    .then((json) => (data.value = json));
}
loadData().then();

const myDataStore = useMyDataStore();

watch(data, (newVal) => {
    myDataStore.update(newVal);
}

相关问题