J'ai un simple composant React que je connecte (mappant un simple tableau / état). Pour éviter de référencer le contexte du magasin, j'aimerais avoir un moyen d'obtenir une «répartition» directement à partir des accessoires. J'en ai vu d'autres utiliser cette approche mais je n'y ai pas accès pour une raison quelconque :)
Voici les versions de chaque dépendance npm que j'utilise actuellement
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
Voici le composant avec la méthode de connexion
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 vous avez besoin de voir le réducteur (rien d'excitant mais le voici)
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 vous avez besoin de voir comment mon routeur est configuré avec redux
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
mettre à jour
ressemble à si j'omettais ma propre répartition dans la connexion (actuellement ci-dessus, je montre fetchUsers), j'obtiendrais une distribution gratuite (mais je ne sais pas si c'est ainsi qu'une configuration avec des actions asynchrones fonctionnerait habituellement). Les gens se mélangent-ils ou sont-ils tout ou rien?
[mapDispatchToProps]
bindActionCreators(actionCreators, dispatch)
option? J'ai remarqué dans votre code à la// es7 spread syntax
ligne, ledispatch
n'est pas passé àbindActionCreators