2016-11-24 5 views
2

私は、私はinitialUpload機能を次のスマートコンポーネントを指定していている必要FUNCです:アクションは最初に定義されていない

import React, { Component, PropTypes } from 'react'; 
import UploadForm from '../../components/UploadForm/UploadForm'; 
import HeaderSelection from '../../components/HeaderSelection/HeaderSelection'; 
import { initialUpload } from '../../redux/modules/Upload'; 
import { connect } from 'react-redux'; 

console.log(typeof initialUpload); //function 

@connect((state) => { 
    return { 
    file: state.getIn(['upload', 'file']) 
    }; 
}, { 
    initialUpload 
}) 
export default class Home extends Component { 
    static propTypes = { 
    initialUpload: PropTypes.func.isRequired 
    }; 

    render() { 
    return (
     <div> 
     <UploadForm handleFilesChange={this.props.initialUpload}/> 
     <HeaderSelection/> 
     </div> 
    ); 
    } 
} 

は、しかし、私は、エラーメッセージが出ます:

をwarning.js:36警告:失敗した小道具のタイプ:小道具はConnect(Home)に必要であるとマークされた ですが、その値はundefinedです。

ファンクションはディスパッチでラップされ、コンポーネント階層構造を受け継いでいるので、何が起こっているのか混乱しています。

+0

どのコンポーネントがホームと呼ばれていますか? – Aus

答えて

2

@connectは、結果のラッピングコンポーネントにstatic propTypesを割り当てています。Home自体ではなく、むしろ奇妙な動作です!私はそれがES7変換によって引き起こされると考え、この動作は

以前のバージョンに存在していなかったの周りの作業は、クラス定義の外wrappedComponentにpropTypesを定義することです:

@connect(...) 
export default Home extends Component{ 
    render() { 
     // .... 
    } 
} 

Home.WrappedComponent.propTypes = { 
    initialUpload: PropTypes.func.isRequired 
} 

別のオプションは使用しないだろうデコレータ&直接接続

関連する問題