Eu tenho um componente React simples que eu conecto (mapeando uma matriz / estado simples). Para evitar fazer referência ao contexto da loja, gostaria de uma maneira de obter "envio" diretamente dos adereços. Já vi outras pessoas usando essa abordagem, mas não têm acesso a ela por algum motivo :)
Aqui estão as versões de cada dependência de npm que estou usando atualmente
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
Aqui está o componente com método de conexão
class Users extends React.Component {
render() {
const { people } = this.props;
return (
<div>
<div>{this.props.children}</div>
<button onClick={() => { this.props.dispatch({type: ActionTypes.ADD_USER, id: 4}); }}>Add User</button>
</div>
);
}
};
function mapStateToProps(state) {
return { people: state.people };
}
export default connect(mapStateToProps, {
fetchUsers
})(Users);
Se você precisar ver o redutor (nada emocionante, mas aqui está)
const initialState = {
people: []
};
export default function(state=initialState, action) {
if (action.type === ActionTypes.ADD_USER) {
let newPeople = state.people.concat([{id: action.id, name: 'wat'}]);
return {people: newPeople};
}
return state;
};
Se você precisa ver como meu roteador está configurado com redux
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
atualizar
parece que se eu omitir meu próprio despacho na conexão (atualmente acima estou mostrando fetchUsers), eu o obteria gratuitamente (só não tenho certeza se é assim que uma configuração com ações assíncronas normalmente funcionaria). As pessoas se misturam e combinam ou é tudo ou nada?
[mapDispatchToProps]
bindActionCreators(actionCreators, dispatch)
opcional? Percebi em seu código na// es7 spread syntax
linha, odispatch
não é passado parabindActionCreators