私はVuexの基本的な作業を達成しようとしていますが、何らかの理由でそれが機能していないため、遠くに検索した後、Vue2 + Vuex Commit Not Commit(Vue devtoolsなし)
私はをやろうとしている何:
新しいプロパティ(オブジェクト)と私の店でのオブジェクトのリスト(オブジェクト)を更新します。間違って何が起こっている
:
私も(私はmapActions経由アクションにアクセスしています)私のコンポーネントから新しいオブジェクトをコミットするアクションを派遣する前に、リスト内の既存のオブジェクト内の特定のプロパティが更新されます私のコンポーネントの入力/ vモデルに結び付けられた値を使用します。私のコードは、以下に示すように、私は、オブジェクトとの反応性が問題である知っているので、私は、私は完全に愚かな何かをやっているとは思わないのはなぜドキュメントあたりVue.set(...)
(Mutations Follow Vue's Reactivity Rules)
を使用しています...(しかし、おそらく間違っている)
私はDevToolsの突然変異をチェックすると突然変異が予想通りに記録され、 "Commit"/"Commit All"を押すとリストの既存のオブジェクトはもはや入力。これは、明らかに、行動が文字通り状態への変更をコミットしていると仮定した場合に発生すると予想される動作です。しかし、なぜコード内で、そしてdevtools内でのみ動作しませんか?私はおそらく基本的な問題である何のために再び謝るが、私は同様の問題と私たちが欠けているものについて何ら書かれた説明といくつか他の人を見てきました
...
初期状態
const state = {
quotes: {}
}
変異
mutations: {
[types.ADD_QUOTE] (state, payload) {
Vue.set(state.quotes, payload.id, payload)
}
}
アクション
actions: {
addQuote ({ commit }, payload) {
commit(types.ADD_QUOTE, payload)
}
}
コンポーネント
<template>
<div class="quote-block">
<label>price</label>
<input type="text" v-model="quote.price">
<label>id</label>
<input type="text" v-model="quote.id">
<!-- Just displaying props below -->
<div>{{ quote.item }}</div>
<div>{{ quote.vendor }}</div>
<div>Qty: {{ quote.qty }}</div>
<button @click="addQuote(quote)">Submit quote</button>
</div>
</template>
<script>
import { mapActions } from 'vuex'
export default {
props: {
vendor: String,
item: String,
qty: Number
},
data() {
return {
quote: {
id: '',
price: '',
timestamp: Date.now(),
vendor: this.vendor,
item: this.item,
qty: this.qty
}
}
},
methods: {
...mapActions([
'addQuote'
])
}
}
は、デベロッパーツール内を要約すると、私はid
とprice
の値は、私がstate.quotes
に設定されたオブジェクト内変える見る - 彼らは明らかに縛られています私のコンポーネント内にあるquote.price
とquote.id
のvモデルに接続します。 devtools内の "Commit All"がそれらのオブジェクトのプロパティーの変更を停止するのは、たった今です。なぜこれらのコミットを行うアクション内にcommit
メソッドがないのですか?
同じ根本的な問題を共有していなかった関連する質問があります:https://stackoverflow.com/questions/42294030/vuex-commit-does-not-commit-to-store?rq=1 – pandycircus
コードここで完璧に見える。しかし、私は何が間違っているのか分かりません。それは他のコンポーネントで起こっているようですか?何が更新されましたか? – dube
@ありがとうございました!私はあなたのコメントに気付く前に要約を入れました。非常に短い答えは、コンポーネントの入力にある値に基づいて状態が変化していることです。 devtools内の「Commit All」だけが状態を「ロック」するようです。 – pandycircus