2017-06-20 16 views
2

私はVuejsプロジェクト(Vue-cliを使って)にAirbnb Eslintをunsingしています。ルールの1つはno-param-reassignです。 (Vuexを使用して)状態を制御するためには、変異/アクションを使用する必要がありますルールVuex Mutations and Airbnb eslint

mutations: { 
    increase: (state) => { 
     const thisState = state; 
     thisState.coutner++; 
    } 
} 

に応じ

ルール変更後の紛争

mutations: { 
    increase: (state) => { 
     state.counter++; 
    } 
} 

をあり上のステートメントを書いて、eslintルールを破るより良い方法?

ソリューションCobaltwayanswerのおかげで)

がルールにignorePropertyModificationsFor'state'を追加します。

+4

Yuck!私はそのルールを無効にするでしょう。あなたのプロジェクトに適したスタイルガイドを選んでください。 –

+0

@craig_hええ、それは本当に悪いことが分かります。通常、私は標準的なスタイルを使用しますが、エアバッグを試してみることにしました。私はこのルールをオフにしなければならないでしょう。 –

+2

ルールを完全に無効にする必要はありません。私の追加を参照してください。 – Cobaltway

答えて

11

いいえ、申し訳ありません。

Vuexストアの状態はVueによって返されるため、 状態を変更すると、状態を確認するVueコンポーネントが自動的に更新されます。 これはまた

[...]無地のVueでの作業時Vuex変異が 警告同じ反応性の対象となっている意味出典:https://vuex.vuejs.org/en/mutations.html

それはあなたが取得するには、パラメータを変異させなければならないことを意味していあなたの実際の状態への変更。唯一の解決策は、そのルールをオフにすることです。

補遺:

私はよりよい解決策を持っていることがあります。 their ESLintによって強制として、これは実際のルールであることに注意してください:

'no-param-reassign': ['error', { 
    props: true, 
    ignorePropertyModificationsFor: [ 
    'acc', // for reduce accumulators 
    'e', // for e.returnvalue 
    'ctx', // for Koa routing 
    'req', // for Express requests 
    'request', // for Express requests 
    'res', // for Express responses 
    'response', // for Express responses 
    '$scope', // for Angular 1 scopes 
    ] 
}], 

あなたの状態の属性を変更する際にエラーが発生しませんので、あなたは、ignorePropertyModificationsFor配列に'state'を追加することがあります。

+0

うわー、これは素晴らしいです、ちょうど試して、それは完璧に動作します。ありがとう:) –