sourcecode

Vuex 상태는 일반 기능에 의해 변형되지 않지만 전용 기능에 의해 변형됩니다.

codebag 2023. 6. 12. 21:22
반응형

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

반응형