Temos alguns lugares em nosso código onde estamos passando vários objetos de ações vinculadas em componentes. Seria ótimo ter opcionalmente passar uma lista de objetos de ação para bindActionCreators
.
bindActionCreators([SomeActions, OtherActions], dispatch)
A ressalva, é claro, seria que as ações duplicadas seriam substituídas pela última processada.
Você pode fazer isso com a proposta de propagação do objeto ES7:
bindActionCreators({ ...SomeActions, ...OtherActions }, dispatch)
ou (vanilla ES6, precisa de Object.assign
polyfill ou plugin Babel)
bindActionCreators(Object.assign({}, SomeActions, OtherActions), dispatch)
ou (ES5, assume lodash
)
var assign = require('lodash/object/assign');
bindActionCreators(assign({}, SomeActions, OtherActions), dispatch)
Ah excelente, isso é ainda mais fácil. Obrigado!
🙌
Isso é útil! Obrigado!
Super útil! :estrela2:
@gaearon isso deve ser adicionado à seção de dicas no documento da API bindActionCreators
?
Uma solicitação de pull é bem-vinda :wink:
Não estou trabalhando ativamente nos documentos agora, então minha resposta é a mesma: “se você gostaria que algo estivesse nos documentos, por favor envie um PR”.
Não tenho certeza se isso ajudará alguém, mas eu estava tentando combinar minhas ações de aplicativo e ações de react-native-router-flux
e abaixo funcionou para mim.
import * as AppActions from './actions';
import { Actions } from 'react-native-router-flux';
function mapDispatchToProps(dispatch) {
return { actions: {...bindActionCreators(AppActions , dispatch), ...Actions } };
}
Não tenho certeza se isso ajudará alguém, mas eu estava tentando combinar minhas ações de aplicativo e ações de react-native-router-flux e abaixo funcionou para mim.
Isso é um pouco confuso porque Actions
de react-native-router-flux
parece não ter nada em comum com Redux, e provavelmente não deveria estar em mapDispatchToProps
. Basta usá-los diretamente em seus componentes.
Comentários muito úteis
Você pode fazer isso com a proposta de propagação do objeto ES7:
ou (vanilla ES6, precisa de
Object.assign
polyfill ou plugin Babel)ou (ES5, assume
lodash
)