I am trying to create an app with a CSV upload. When a CSV is uploaded it will change the state and then I will parse from CSV to JSON and do stuff with it. The idea is to upload a file and update state. Once that state is updated I would pass the CSV to a Meteor.method to parse to JSON. I am using Meteor, React and Redux. I have a component that handles the upload, an action and a reducer. All of the files are below - I am new to Meteor, React and Redux and I cannot figure out for the life of me why this is not working. I don't think that I am fully understanding what I am trying to accomplish. Any suggestions are welcome.
ERROR - Uncaught TypeError: fileUpload is not a function UploadCSV.jsx
// ACTIONS - fileUpload.js
export default function fileUpload(file) {
return {
type: 'FILE_UPLOAD',
file
};
}
//REDUCERS - upLoad.js
export default function upLoad(state = 'NO_FILE', action = {}) {
switch (action.type) {
case 'FILE_UPLOAD':
return action.file;
default:
return state;
}
}
//COMPONENTS - UploadCSV.jsx
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import Dropzone from 'react-dropzone';
import { RaisedButton } from 'material-ui';
import { Colors } from 'material-ui';
import fileUpload from '../actions/fileUpload.js';
import { uploadCSV } from '../actions/uploadCSV.js';
class UploadCSV extends Component {
render( dispatch, file, fileUpload ) {
const onDrop = (file) => {
console.log(file);
}
const upLoad = () => {
this.props.dispatch(fileUpload(file));
};
return (
<div>
<Dropzone accept="csv"
onDrop={ () => {
return upLoad();
}}>
<div>Click or drop files here.</div>
</Dropzone>
</div>
)
}
}
export default connect()(UploadCSV);
I don't understand why fileUpload is "not a function" if it is an action and it is being imported.? If anyone can lend a hand I would appreciate it.
Thanks!