15

CSV アップロードでアプリを作成しようとしています。CSV がアップロードされると、状態が変更されます。次に、CSV から JSON に解析し、処理を行います。アイデアは、ファイルをアップロードして状態を更新することです。その状態が更新されたら、CSV を Meteor.method に渡して JSON に解析します。Meteor、React、Redux を使用しています。アップロード、アクション、およびリデューサーを処理するコンポーネントがあります。すべてのファイルは以下のとおりです。私は Meteor、React、Redux の初心者であり、なぜこれが機能しないのか一生わかりません。自分が達成しようとしていることを完全に理解しているとは思えません。どんな提案でも大歓迎です。

エラー - キャッチされていない TypeError: 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 が「関数ではない」理由がわかりません。誰かが手を貸してくれるなら、私はそれを感謝します。

ありがとう!

4

6 に答える 6

2

render メソッドで fileUpload という引数を定義したためです。render メソッドで定義したすべての引数を削除します。クラスには、インポートされたすべてのモジュールに対するクロージャ スコープがあるため、クラス内のどこからでも参照できます。

于 2016-04-13T03:18:18.770 に答える