2016-07-26 5 views

答えて

0

@jzmによって提案された高次の構成要素アプローチがbetterですが、あなたはまた、ミックスインを使用することができます。

var myMixin = { 
     componentWillMount: function(){ 
     //common code 
     }, 
     componentDidUpdate: function(){ 
     //common code 
     } 
}; 
var ComponentA = React.createClass({ 
    mixin: [myMixin] 
}); 
var ComponentB = React.createClass({ 
    mixin: [myMixin] 
}) 
+0

実際、それは@jzmのアプローチではうまくいきませんでした。私もmixinで解決されました。 mixinが便利です。 – izuchy

+0

申し訳ありませんが、私も 'ミックスインで解決されました'とはどういう意味ですか? –

+0

@izuchyミックスインは、今後、反応でサポートされなくなります。だから彼らはこれにアプローチする正しい方法ではありません。 https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html – jzm

1

複数のコンポーネント間で機能を共有することを意味しますか?もしそうなら、あなただけの別のファイルにそれらを保つことができ、必要に今までどこにそれらをインポートします。

// common js 

function hello() { 
    console.log('hello'); 
} 

module.exports = hello; 

// your component 
var hello = require('./common'); 

var ComponentA = React.createClass({ 
    componentDidUpdate: function(){ 
     hello(); 
    },//... 

http://www.webpackbin.com/Nk80m1x_W


あなたがすることができるもう一つは、ラッパー(高い順)コンポーネントを作成することです:

var WrapperComponent = React.createClass({ 
    componentDidUpdate: function() { 
    // code you want to inject. 
    }, 
    render: function() { 
    return(<div>{this.props.children}</div>); 
    } 
}); 

あなたがそのライフサイクルを持つコンポーネントを使用する必要がある時はいつでも、その後、あなたはJSXでこれを行うことができます。

<WrapperComponent> 
    <ComponentA /> 
</WrapperComponent> 
+0

はどうもありがとうございました。しかし、コンポーネントの数が多いので、ライフサイクルをオーバーライドするなどの方法であなたは知っていると思いますか? – izuchy

+0

@izuchyアップデートを参照 – jzm

+0

素晴らしい!ありがとうございました。 – izuchy

関連する問題