Redux: O bindActionCreators poderia opcionalmente pegar uma lista de objetos de ação?

Criado em 30 jul. 2015  ·  9Comentários  ·  Fonte: reduxjs/redux

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.

Comentários muito úteis

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)

Todos 9 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações