Ho un semplice componente React che collego (mappando un semplice array / stato). Per evitare di fare riferimento al contesto per il negozio, vorrei un modo per ottenere "spedizione" direttamente dagli oggetti di scena. Ho visto altri usare questo approccio ma non ho accesso a questo per qualche motivo :)
Ecco le versioni di ciascuna dipendenza npm che sto utilizzando attualmente
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
Ecco il componente con il metodo di connessione
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 hai bisogno di vedere il riduttore (niente di eccitante ma eccolo qui)
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 hai bisogno di vedere come è configurato il mio router con redux
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
aggiornare
sembra che se ometto il mio invio nella connessione (attualmente sopra sto mostrando fetchUsers), otterrei la spedizione gratuita (solo non sono sicuro se questo è il modo in cui funzionerebbe normalmente una configurazione con azioni asincrone). Le persone si mescolano e si abbinano o è tutto o niente?
[MapDispatchToProps]
bindActionCreators(actionCreators, dispatch)
facoltativo? Ho notato nel tuo codice alla// es7 spread syntax
riga, ildispatch
non è passato abindActionCreators