반응형
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 |