반응형
Vuex 상태는 일반 기능에 의해 변형되지 않지만 전용 기능에 의해 변형됩니다.
LokiJS에서 제공하는 스토리지를 가지고 있으며, 이 스토리지를 사용하여 Vuex 상태를 업데이트합니다.autoloadCallback.
LookIJS 스토리지:
var db = new loki('mydatabase', {
autoupdate: true,
autoload: true,
autoloadCallback: setupHandler
})
Vuex 상태 및 돌연변이:
const state = {
ads: []
}
const mutations = {
updateArray(from, to) {
from = to
},
updateAds() {
state.ads = db.getCollection('ads').data
}
}
그리고 콜백 자체:
function setupHandler() {
setupCollection('ads') // Just sets up the collection if it doesn't exist
db.getCollection('ads').insert({dummy: "Dummmy!"})
mutations.updateArray(state.ads, db.getCollection('ads').data)
mutations.updateAds()
}
여기서 문제는 전화를 건다는 것입니다.updateArray(state.ads, content) 변경하지 않습니다.state.ads로.content그러나updateAds()본질적으로 같은 일을 하는 함수는 단지 인수를 받아들이지 않고 하드 코딩을 합니다.state.ads따라서.
어레이를 업데이트하기 위한 일반 기능을 작성하는 접근 방식의 근본적인 문제는 무엇입니까?할 수 있는 방법이 있습니까?
다음은 JSFiddle MCVE의 예입니다.
의 구체적인 내용을 알지 못한 채loki저는 당신이 다음과 같은 변경이 필요하다고 생각합니다.
돌연변이는 다음과 같이 나타나야 합니다.
const mutations = {
updateArray(state, to) {
state.ads = to
}
}
setupHandler 기능은 다음과 같습니다.
function setupHandler() {
setupCollection('ads')
db.getCollection('ads').insert({dummy: "Dummmy!"})
store.commit('updateArray', db.getCollection('ads').data)
}
돌연변이는 상태를 첫 번째 매개 변수로 받아들이고 두 번째 매개 변수를 포함하는 개체 인수를 받아들이는 함수입니다.돌연변이는 스토어의 명령을 사용하여 커밋되어야 합니다.commit방법.
여기 당신의 바이올린이 업데이트되었습니다.
언급URL : https://stackoverflow.com/questions/48098599/vuex-state-is-not-mutated-by-a-general-function-whilst-a-dedicated-function-does
반응형
'sourcecode' 카테고리의 다른 글
| Javascript 조건부 내부 유형 스크립트 인터페이스 (0) | 2023.06.17 |
|---|---|
| 문자열 리터럴 형식 인수를 기반으로 하는 변수 반환 형식 (0) | 2023.06.12 |
| 여러 줄의 설명 해결 방법? (0) | 2023.06.12 |
| 기존 사용자 정의 테마를 사용하여 XML에서 활동의 제목 표시줄을 숨기는 방법 (0) | 2023.06.12 |
| Google Firebase 오류(정의되지 않은 함수가 반환됨, 예상 약속 또는 값) (0) | 2023.06.12 |