Un possibile utilizzo di bindActionCreators()è quello di "mappare" più azioni insieme come un unico sostegno.
Un normale invio si presenta così:
Associa un paio di azioni comuni degli utenti agli oggetti di scena.
const mapStateToProps = (state: IAppState) => {
return {
// map state here
}
}
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
userLogin: () => {
dispatch(login());
},
userEditEmail: () => {
dispatch(editEmail());
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
Nei progetti più grandi, mappare ciascuna spedizione separatamente può sembrare ingombrante. Se abbiamo un gruppo di azioni correlate tra loro, possiamo combinare queste azioni . Ad esempio un file di azioni utente che ha eseguito tutti i tipi di diverse azioni correlate all'utente. Invece di chiamare ogni azione come un invio separato, possiamo usare al bindActionCreators()posto di dispatch.
Più invii utilizzando bindActionCreators ()
Importa tutte le tue azioni correlate. Probabilmente sono tutti nello stesso file nell'archivio redux
import * as allUserActions from "./store/actions/user";
E ora invece di usare l'invio usa bindActionCreators ()
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
...bindActionCreators(allUserActions, dispatch);
},
};
};
export default connect(mapStateToProps, mapDispatchToProps,
(stateProps, dispatchProps, ownProps) => {
return {
...stateProps,
userAction: dispatchProps
ownProps,
}
})(MyComponent);
Ora posso usare l'elica userActionper chiamare tutte le azioni nel tuo componente.
IE:
userAction.login()
userAction.editEmail()
o
this.props.userAction.login() this.props.userAction.editEmail().
NOTA: non è necessario mappare bindActionCreators () a un singolo prop. (L'addizionale a => {return {}}cui si mappa userAction). Puoi anche usare bindActionCreators()per mappare tutte le azioni di un singolo file come oggetti di scena separati. Ma trovo che ciò possa creare confusione. Preferisco che a ciascuna azione o "gruppo di azioni" venga assegnato un nome esplicito. Mi piace anche nominare il ownPropsper essere più descrittivo su cosa sono questi "oggetti di scena per bambini" o da dove provengono. Quando si usa Redux + React può creare un po 'di confusione dove vengono forniti tutti gli oggetti di scena, quindi più sono descrittivi, meglio è.
#3una scorciatoia per opzione#1?