2017-11-08 10 views
0

として、vuexのポイントは、唯一の変異/アクション/ゲッターを通じてコン​​ポーネントにそれを暴露することにより、状態の一貫性を保証することです。なぜ状態がコンポーネントに見えるのですか?私は理解して

しかし、コンポーネントは突然変異/アクションを使用せずに$ store.stateを直接操作することができます。潜在的に状態が不一致になる可能性があります。

なぜvuex状態が直接さらされますか?

+0

あなたはゲットを介して状態を取得した場合でも、状態に直接バインドすることができますが、ゲッターで状態を取得した場合でも、それを変更することができます –

+0

私はあなたが '$ store.state'は、実際にそれを変更しません。 – Phil

答えて

1

突然変異/アクション/ゲッターなどを使用することが推奨されるベストプラクティスですが、にはが続かなければなりません。

ちょうどその時点の状態から値を読み取って、そのゲッターを書き込むために多すぎるかもしれないということかもしれません。

私は個人的には、常に集中的なシステムを使わずに状態を突然変異させ始めると、物事が一貫性を保つために行動/ゲッターを使用しようとします。

状態にuserモジュールがあるとします。あなたはちょうどそうユーザ名を必要とする$store.state.user.usernameが、私はいつもuser.username経由getUserとコンポーネントのアクセス、それを介してユーザを公開することを好むように誘惑される可能性があります。

直接状態にアクセスできることのためのプロの時計です:

watch: { 
    '$store.state.user' (to, from) { 
    console.log('I changed!') 
    } 
} 

これは、ユーザーの状態が変化したときにあなたが知ることができますが、あなたは$this.$store.dispatch('setUser', myUser)を使用した場合、再び、あなたはで同じことを行うことができますアクション。

ここのキーは一貫性があり、道を選び、それを使用していると思いますが、ベストプラクティスに従うことが常に推奨されます。

関連する問題