Я получил следующий магазин:
export const useMyStore = defineStore('myStore', {
state: () => {
return {
openTransOnly: false,
keyword: '',
openTransStatus: { nextPage: 0, complete: false },
pastDueTransStatus: { nextPage: 0, complete: false },
};
},
getters: {
transStatus(state) {
return state.openTransOnly? state.openTransStatus: state.pastDueTransStatus;
},
},
});
Теперь предположим, что я хочу преобразовать указанное выше свойство «ключевое слово» в ссылку. Вот как я это сделал:
const myStore = useMyStore();
const { keyword: needle } = storeToRefs(myStore);
У меня также есть следующее вычисляемое свойство в моем компоненте:
const page = computed({
get: () => myStore.transStatus.nextPage,
set: (value) => (myStore.transStatus.nextPage = value),
});
который отлично работает. Однако я хотел бы знать, как использовать тот же «storeToRefs» выше, чтобы определить «страницу». Я пробовал это:
const { keyword: needle, transStatus: { nextPage: page } } = storeToRefs(myStore);
Но пишет "страница не определена". Что я делаю не так? Это вообще возможно?
Решение проблемы
Как storeToRefs
следует из названия, он возвращает refs. transStatus
является ref и не имеет nextPage
свойства, это transStatus.value.nextPage
. Раннее разрушение nextPage
приведет к потере реактивности из-за того, как transStatus
работает, и потому что значение является скалярным.
В случае, если это распространенный сценарий использования, хранилище может включать в себя page
вычисляемые. Поскольку состояние хранилища не должно изменяться вне хранилища, page
оно может быть связано с setPage
действием.
Комментариев нет:
Отправить комментарий