これは、あなた自身のアクションクリエイターと自分のレデューサーの責任であり、あなたのアクションとレデューサーの構想を概念的にどのように構成するかに大きく関係します。 "ビジネスロジック"の構築に関するRedux FAQの質問は、ここでは非常に関連しています:http://redux.js.org/docs/FAQ.html#structure-business-logic。
サンクアクションの作成者はgetState
へのアクセス権を持っているので、サンクは、現在の状態をチェックし、のみなど、この例のように、一定の条件の下で派遣持っていることは非常に一般的です:
// An example of conditional dispatching based on state
const MAX_TODOS = 5;
function addTodosIfAllowed(todoText) {
return (dispatch, getState) => {
const state = getState();
if(state.todos.length < MAX_TODOS) {
dispatch({type : "ADD_TODO", text : todoText});
}
}
}
あなたの減速も持つことができる健全性チェック同様に:個人的に
function todosReducer(state, action) {
switch(action.type) {
case "ADD_TODO": {
if(state.todos.length >= state.maxTodos) {
return state;
}
return {
...state,
todos : state.todos.concat(action.newTodo)
}
}
default : return state;
}
}
、私はただやみくもに、それは非常に小さいのですがない限り(のように、現在選択されているタブか何かの名前を言う)、行動にどのようなデータの中にマージ私のレデューサーを持って好きではありません。私は、アクションを作成するために自分のアクションクリエイターに合理的な量のロジックを持たせることを好みます。アクション自体に含まれる最小限のデータ量と、そのアクションに基づいて作業を行うための十分にスマートなレデューサーです。
ブラウザでは、JavaScriptは1つのスレッドしかありません。したがって、長い計算が最初に終了し、次に2番目の計算が開始されます。 Btwでは、ブラウザをフリーズさせるので、長い計算を避けるべきです(覚えておいてください、すべてのUIと計算には1つのスレッドしかありません)。 – Pierrickouw
より良い言葉遣いの欠如のために、本当のスレッドではありません。アクションは非同期であり、状態キーは参照によってアクセスされています。 – firedev