私は、別の減速機からの情報を必要とする減速機を持っていることがあると思います。それ以外の場合は私が正しくインデックスを決定することができないので、私は、関数の2行目でstore.getStateを呼び出して行うRedux:reduce.getState()をリデューサ関数で呼び出すと、それは反パターンですか?
import * as ActionTypes from '../actions/action_type_constants';
import KeyCode from 'keycode.js/index';
import {store} from "../index";
import {mod} from "../pure_functions";
export function selectedCompletion(state = 0, action) {
if (action.type === ActionTypes.arrowKeyPressed) {
const completionsLength = store.getState().completions.data.length;
if (action.keyCode === KeyCode.UP) {
return mod(state - 1, completionsLength);
} else if (action.keyCode === KeyCode.DOWN) {
return mod(state + 1, completionsLength);
}
}
return state;
}
:たとえば、私は、この減速機を持っています。
私はおそらくこれともう一つの還元剤をリファクタリングすることができますので、一つの大きな還元剤になりますが、読みやすさのために私はこのオプションを好むでしょう。
このパターンのstore.getState()をレデューサーで呼び出すと、何らかの問題が発生するかどうかはわかりません。
私はここで少し混乱しています。getStateは現在の状態に基づいて違反を呼びますか?特に、再配置できないサードパーティ製の減速機の使用例があります。 –
最初に、「純粋な関数」の定義は、「その入力にのみ依存し、それ自体の外には何も変更または影響を与えない関数」です。インポートされたストアを参照すると、純粋ではありません。第2に、これは特定の店舗インスタンスにレデューサーを結びつけます。つまり、テストや複数の店舗のようなケースでは機能しません。したがって、ほとんどの場合、コード_may_は機能しますが、間違いなく「正しい」ことはありません。物事を扱う方法については、FAQ項目と[Structuring Reducers](http://redux.js.org/docs/recipes/StructuringReducers.html)をもう一度お読みください。 – markerikson