Ich versuche, meine erste Verbindung zwischen einer React-Komponente zu Redux zu erstellen, um Daten von meiner Knoten-API zu sammeln.Wie verbinde ich eine ReactJS-Komponente richtig mit Redux mit react-redux?
Dies ist eine einfache Komponente für jetzt, aber es wird in der Zukunft wachsen und wird Unterkomponenten ableiten, die mir erlauben, eine vollständige Benutzer CRUD-Schnittstelle (Liste, bearbeiten, löschen, anzeigen, etc.) zu erstellen. In diesem Sinne muss ich die Aktionsfunktionen mit dem Objekt this.props
verbinden, damit es von den untergeordneten Komponenten geerbt werden kann.
Hier ist mein Code:
Component UserGrid - Ein Raster-Tabellendaten, die Benutzer Informationen
lädtimport React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as userActions from '../../actions/userActions';
class UserGrid extends React.Component {
componentWillMount() {
this.props.fetchUsers();
}
render() {
const mappedUsers = users.map(user => <li>{user.email}</li>);
return (
<div>
<ul>{mappedUsers}</ul>
</div>
);
}
}
function mapStateToProps(state) {
return {
users: state.users
}
}
export default connect(
mapStateToProps,
bindActionCreators(userActions, dispatch)
)(UserGrid);
Mein userAction
, dass effektiv Benutzer laden von einem AJAX-Aufruf:
import axios from "axios";
export function fetchUsers() {
return function(dispatch) {
axios.get("/api/users")
.then((response) => {
dispatch({type: "FETCH_USERS_FULFILLED", payload: response.data});
})
.catch((err) => {
dispatch({type: "FETCH_USERS_REJECTED", payload: err});
})
}
}
Mit diesem Code bekomme ich Folgendes Fehler:
Uncaught ReferenceError: dispatch is not defined
at Object.<anonymous> (bundle.js:37984)
at __webpack_require__ (bundle.js:556)
at fn (bundle.js:87)
at Object.<anonymous> (bundle.js:37711)
at __webpack_require__ (bundle.js:556)
at fn (bundle.js:87)
at Object.<anonymous> (bundle.js:8466)
at __webpack_require__ (bundle.js:556)
at fn (bundle.js:87)
at Object.<anonymous> (bundle.js:588)
(anonymous) @ bundle.js:37984
__webpack_require__ @ bundle.js:556
fn @ bundle.js:87
(anonymous) @ bundle.js:37711
__webpack_require__ @ bundle.js:556
fn @ bundle.js:87
(anonymous) @ bundle.js:8466
__webpack_require__ @ bundle.js:556
fn @ bundle.js:87
(anonymous) @ bundle.js:588
__webpack_require__ @ bundle.js:556
(anonymous) @ bundle.js:579
(anonymous) @ bundle.js:582
Was ist der richtige Weg, um meine Komponente mit den Redux-Diensten zu verbinden?
Sie passieren 'dispatch' als Argument an' bindActionCreators' aber es ist nicht überall definiert. –