Redux]action、reduce、dispatchの作成が簡単
13051 ワード
アクション作成関数の作成が容易
createAction
これは、アクション生成関数の作成を支援するより簡単な関数です.
既存のアクション作成関数
const CHANGE_INPUT = 'waiting/CHANGE_INPUT'; // 인풋 값 변경
const CREATE = 'waiting/CREATE'; // 명단에 이름 추가
const ENTER = 'waiting/ENTER'; // 입장
const LEAVE = 'waiting/LEAVE'; // 나감
// **** FSA 규칙을 따르는 액션 생성 함수 정의
export const changeInput = text => ({ type: CHANGE_INPUT, payload: text });
export const create = text => ({ type: CREATE, payload: text });
export const enter = id => ({ type: ENTER, payload: id });
export const leave = id => ({ type: LEAVE, payload: id });
動作生成関数はFSAルールに従います.必要なのは.
1.純JavaScriptオブジェクト.
2.type値が必要です.
選択的に
上記の例では、createまたはchangeInputはテキスト値を受信する必要があるため、パラメータとしてのテキストをペイロード値として指定します.
createAction関数を使用する場合は、タイプと負荷を指定する必要はありません.
1番目のパラメータはtype、2番目のパラメータはペイロードCreatorを受け入れます.
既存のアクション作成関数
export const changeInput = text => ({ type: CHANGE_INPUT, payload: text });
createAction関数を使用する場合
export const changeInput = createAction(CHANGE_INPUT, text => text);
リライタのシンプル化
handleActions
switch、case文を使用せずに、各動作タイプがupdata関数を実現する方法.
読みやすさは良いとはいえよくわかりません
export default handleActions(
{
[CHANGE_INPUT]: (state, action) => ({
...state,
input: action.payload,
}),
[CREATE]: (state, action) => ({
...state,
list: state.list.concat({
id: action.payload.id,
name: action.payload.text,
entered: false,
}),
}),
[ENTER]: (state, action) => ({
...state,
list: state.list.map(
item =>
item.id === action.payload
? { ...item, entered: !item.entered }
: item
),
}),
[LEAVE]: (state, action) => ({
...state,
list: state.list.filter(item => item.id !== action.payload),
}),
},
initialState
);
dispatch:mapDispatchToPropsの方が簡単
bindActionCreators
既存
const mapDispatchToProps = dispatch => ({
increment: () => dispatch(increment()),
decrement: () => dispatch(decrement()),
});
bindActionCreators
const mapDispatchToProps = dispatch =>
bindActionCreators({ increment, decrement }, dispatch); // **** (2) bindActionCreators 사용.
Reference
Reference
この問題について(Redux]action、reduce、dispatchの作成が簡単), 我々は、より多くの情報をここで見つけました https://velog.io/@gygy/Redux-action-reducer-dispatch-더-간편하게-작성하기-createAction-bindActionCreators-handleActionsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol