Ich benutze 'react-fileupload' um Dateien auf meinen Server hochzuladen. Im Erfolgsfall erhalte ich eine Antwort mit dem Inhalt dieser Datei. Also in einer Komponente möchte ich Datei hochladen und Speicherstatus ändern und in einer anderen Komponente möchte ich diese Daten anzeigen.React/Redux Versand Funktion funktioniert nicht
Aber ich weiß nicht, warum meine Versandfunktion nicht funktioniert.
Komponente mit Uploader:
import React, { Component } from 'react';
import FileUpload from 'react-fileupload';
import { connect } from 'react-redux';
import { updateOverview } from '../actions/index';
import { bindActionCreators } from 'redux';
class Header extends Component {
render() {
const options = {
baseUrl: 'http://127.0.0.1:8000/api/upload_file',
chooseAndUpload: true,
uploadSuccess: function(res) {
console.log('success');
updateOverview(res.data);
},
uploadError: function(err) {
alert(err.message);
}
};
return (
<div>
<FileUpload options={options} ref="fileUpload">
<button
className="yellow darken-2 white-text btn-flat"
ref="chooseAndUpload">
Upload
</button>
</FileUpload>
</div>
);
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({ updateOverview }, dispatch);
}
export default connect(null, mapDispatchToProps)(Header);
Komponente, wo die Daten angezeigt:
import React, { Component } from 'react';
import { connect } from 'react-redux';
class Overview extends Component {
renderContent() {
console.log(this.props.overview);
if (!this.props.overview) {
return <div> Upload file!</div>;
}
return this.props.overview;
}
render() {
return (
<div>
<h1>Overview</h1>
{this.renderContent()}
</div>
);
}
}
function mapStateToProps({ overview }) {
return { overview };
}
export default connect(mapStateToProps)(Overview);
Aktion Schöpfer:
import { FETCH_OVERVIEW } from './types';
export function updateOverview(data) {
return { type: FETCH_OVERVIEW, payload: data };
}
Minderer index.js
import { combineReducers } from 'redux';
import overviewReducer from './overviewReducer';
export default combineReducers({
overview: overviewReducer
});
overviewReducer.js
import { FETCH_OVERVIEW } from '../actions/types';
export default function(state = null, action) {
switch (action.type) {
case FETCH_OVERVIEW:
return action.payload;
default:
return state;
}
}
Sie direkt die Aktion 'updateOverview' fordern, Bitte versuchen Sie es mit 'this.props.updateOverview' – RaghavGarg
Ich sehe in den Dokumenten, dass bindActionCreators eine Funktion oder ein Objekt übernimmt. Versuchen Sie vielleicht, die Klammern von updateOverview in den bindActionCreators-Parametern wegzunehmen, da sie als Funktion importiert werden? –
{updateOverview} es bedeutet updateOverview: updateOverview – Ernst