2017-10-30 3 views
-1

HOCは、おそらく他のHOCと一緒にミックスインとして使用されることが想定されているので、冗長ではありますが(例:HOCの名前が前に付いています)高次コンポーネントに反応するべきである(ホック)文脈的な小道具の名前を提供するべきか?

これは、何がベストプラクティスであるべきかの問題と考えられると思います。窓のような振る舞いを注入するため、このHOCのためのより良いです例えばので

、:

@window 
@otherMixin 
class BasicView extends React.Component { 
    render() { 
    const {close, open} = this.props; //these are provided by @window 
    } 
} 

命名非コンテキスト短いVS コンテキスト命名(接頭辞)

@window 
@otherMixin 
class BasicView extends React.Component { 
    render() { 
    const {windowClose, windowOpen} = this.props //these are provided by @window 
    } 
} 

OR コンテキスト命名(ネスト)

@window 
@otherMixin 
class BasicView extends React.Component { 
    render() { 
    const {window} = this.props; //provided by @window 
    window.open(); 
    window.close(); 

    /* optionally we can destructure and work with the shorter 
    * non-contextually named props while still maintaining 
    * a declaration of their context to disambiguate 
    */ 
    //const {window: {open, close} } = this.props; 
    } 
} 

答えて

1

一般ライブラリ設計者は、コンテキストおよびコンテキストオブジェクトをサブスクライブするアドホック反応でこれを提供しています。コンテキストを使用する必要はないかもしれません。しかし、ほとんどのライブラリ設計者は、文脈の仕組みがどのように作用するのかという理由で、「コンテキストネーミング(ネスト)」によって制限されています。

この質問は実際には個人的な意見ではありますが、あなたが選択すべき他の図書館のパターンに従うことを望むのであれば、

明白な理由から、windowという名前の変数を証明することを強くお勧めします。

+0

リアクションコンテキストを使用しなくても、私は、「コンテキストネーミング(ネスト)」パターンが、プロペス名前空間の最小限のフットプリントなどの理由で、より良いものであることがわかります。残念ながら、すべてのHOCライブラリがこれに従うわけではありません。ここで私の質問を促してください。 – bitstrider

+0

名前を付けるvars 'window'のヒント – bitstrider

関連する問題