として、vuexのポイントは、唯一の変異/アクション/ゲッターを通じてコンポーネントにそれを暴露することにより、状態の一貫性を保証することです。なぜ状態がコンポーネントに見えるのですか?私は理解して
しかし、コンポーネントは突然変異/アクションを使用せずに$ store.stateを直接操作することができます。潜在的に状態が不一致になる可能性があります。
なぜvuex状態が直接さらされますか?
として、vuexのポイントは、唯一の変異/アクション/ゲッターを通じてコンポーネントにそれを暴露することにより、状態の一貫性を保証することです。なぜ状態がコンポーネントに見えるのですか?私は理解して
しかし、コンポーネントは突然変異/アクションを使用せずに$ store.stateを直接操作することができます。潜在的に状態が不一致になる可能性があります。
なぜvuex状態が直接さらされますか?
突然変異/アクション/ゲッターなどを使用することが推奨されるベストプラクティスですが、にはが続かなければなりません。
ちょうどその時点の状態から値を読み取って、そのゲッターを書き込むために多すぎるかもしれないということかもしれません。
私は個人的には、常に集中的なシステムを使わずに状態を突然変異させ始めると、物事が一貫性を保つために行動/ゲッターを使用しようとします。
状態にuser
モジュールがあるとします。あなたはちょうどそうユーザ名を必要とする$store.state.user.username
が、私はいつもuser.username
経由getUser
とコンポーネントのアクセス、それを介してユーザを公開することを好むように誘惑される可能性があります。
直接状態にアクセスできることのためのプロの時計です:
watch: {
'$store.state.user' (to, from) {
console.log('I changed!')
}
}
これは、ユーザーの状態が変化したときにあなたが知ることができますが、あなたは$this.$store.dispatch('setUser', myUser)
を使用した場合、再び、あなたはで同じことを行うことができますアクション。
ここのキーは一貫性があり、道を選び、それを使用していると思いますが、ベストプラクティスに従うことが常に推奨されます。
あなたはゲットを介して状態を取得した場合でも、状態に直接バインドすることができますが、ゲッターで状態を取得した場合でも、それを変更することができます –
私はあなたが '$ store.state'は、実際にそれを変更しません。 – Phil