我正在尝试创建一个带有 CSV 上传的应用程序。当上传 CSV 时,它会改变状态,然后我会从 CSV 解析为 JSON 并用它做一些事情。这个想法是上传文件并更新状态。一旦该状态更新,我会将 CSV 传递给 Meteor.method 以解析为 JSON。我正在使用 Meteor、React 和 Redux。我有一个处理上传、一个动作和一个减速器的组件。所有文件都在下面——我是 Meteor、React 和 Redux 的新手,我终其一生都无法弄清楚为什么这不起作用。我不认为我完全理解我想要完成的事情。欢迎任何建议。
错误 - 未捕获的类型错误:fileUpload 不是函数 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);
我不明白为什么如果 fileUpload 是一个动作并且它正在被导入,它为什么是“不是一个函数”。?如果有人可以伸出援助之手,我将不胜感激。
谢谢!