Tengo un componente React simple que conecto (mapeando una matriz / estado simple). Para evitar hacer referencia al contexto de la tienda, me gustaría una forma de obtener "despacho" directamente de los accesorios. He visto a otros usar este enfoque pero no tienen acceso a esto por alguna razón :)
Aquí están las versiones de cada dependencia npm que estoy usando actualmente
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
Aquí está el componente con método de conexión
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);
Si necesita ver el reductor (nada emocionante, pero aquí 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;
};
Si necesita ver cómo está configurado mi enrutador con redux
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
actualizar
Parece que si omito mi propio envío en la conexión (actualmente arriba, estoy mostrando fetchUsers), obtendría el envío gratis (pero no estoy seguro de si así es como una configuración con acciones asíncronas funcionaría normalmente). ¿La gente se mezcla y combina o es todo o nada?
[mapDispatchToProps]
bindActionCreators(actionCreators, dispatch)
opcional? Noté que en su código en la// es7 spread syntax
línea,dispatch
no se pasa abindActionCreators