2017-02-28 8 views
1

動的電源コンポーネントにReduxのコンテナ

import { connect } from 'react-redux'; 
import Renderer from '../components/renderers/AlphaRenderer/AlphaRenderer'; 

const mapStateToProps = state => ({ 
    ... 
}); 

const mapDispatchToProps = dispatch => ({ 
    ... 
}); 

const RendererContainer = connect(mapStateToProps, mapDispatchToProps)(AlphaRenderer); 

export default RendererContainer; 

はこの全く同じ容器が複数で使用されるコンポーネントを反応させる - 各成分が同じ小道具を使用し、同じイベントを発し、それ以外互いに非常に異なっています。各コンポーネントに対して同じコンテナを繰り返すのではなく、コンポーネントをコンテナに渡す方法が必要です。同等のもの:

<RendererContainer component={AlphaRenderer} /> 
<RendererContainer component={BetaRenderer} /> 
<RendererContainer component={CharlieRenderer} /> 

実行時にコンポーネントをコンテナに渡す方法はありますか?

答えて

1

あなたは明らかに動作しません

//just the connect function 
const RendererContainer = connect(mapStateToProps, mapDispatchToProps); 

//react component 
const ReduxWrapperComponent = (props) => (return React.createElement(RendererContainer(props.component));) 

or 
const ReduxWrapperComponent = (props) => (return <div>{RendererContainer(props.component)}</div>;) 

//use it as 
//<ReduxWrapperComponent component={XYZ}/> 
+0

ような何かを行うことができます。 'connect()()'の値を返すことは、ステートレスな反応コンポーネントから 'connect()()'の値を返すことと同じではありません。 – Undistraction

+0

本当ですか?私は 'connect()'ではなく 'connect()'を意味しました。 'connect()'はfnを返します –

+0

不変違反:ReduxWrapperComponent(...):有効なReact要素(またはnull)を返す必要があります。未定義、配列またはその他の無効なオブジェクトが返された可能性があります。 – Undistraction

関連する問題