2016-08-10 11 views
1

これは簡単な質問であれば、とても申し訳ありません。私はたくさんのコンポーネントを持っており、それぞれのコンポーネントに対して、{b:this.constructor.displayName}のそれぞれの初期状態を指定したいと考えています(classNamesを構築するときに "b"が使用されます)。すべてのコンポーネントで "getInitialState"初期状態でbを定義するのではなく、どこにでもbを設定する再利用可能な関数を定義したいと思います。Reactableで再利用可能な関数を作成する方法

私の初期の研究からは、ミックスインが有望だろうと思われます。しかし、ミックスインが途中で出ていることも読んでいます。これを行う最善の方法は何ですか?前もって感謝します!

+1

あなたは 'redux'のようなライブラリを使用してに見たいと思うかもしれませんが、これはあなたがグローバルな状態を持つことができるようになること、すべてのコンポーネント(要求された場合)アクセスすることができます。 http://redux.js.org/docs/basics/ExampleTodoList.html - 最初はあなたの頭を浮かび上がらせるのが難しいかもしれませんが、最終的にはそれを理解するでしょう:) – James111

+0

ミックスインは、 ES6クラス(これはどのように動作するかは文字通り不可能です)。私がお勧めできるものの1つは、Reactのfacebook githubページのReactチュートリアルを最初に実行することです。彼らはかなり良いですし、定期的なJSの理解と組み合わせて、あなたは多くのことをする方法を把握することができます。 Reactは魔法ではありません.JavaScriptだけで、同じJSルールが適用されます。通常のJS関数をインポートして、React.createClassに入れるものの上に実行できます。 –

答えて

2

リアクションでこれを行う現在の方法は、ミックスインではなくコンポジションを使用することです。組成物はまた、「高次成分」として知られており、このようなビットになりますされています

class Foo extends React.Component { 
    render() { 
     return <div>{ this.props.b }</div>; 
    } 
} 

const EmbedClassName = function(Child) { 
    var b = Child.constructor.displayName; 
    return (props) => <Child {...props} b={b} />; 
}; 

var ComposedFoo = EmbedClassName(Foo); 
関連する問題