2017-06-29 1 views
3

eslint-plugin-immutableを使用していますので、thisキーワードを使用することはできません(私はeslint-disable-lineを使用できますが、私はしたくありません)ので、recomposeの中にある小道具にアクセスする方法があるかどうか疑問ですいずれのマウントライフサイクルでも、キーワードを使用しないでください。`this`を使わずにrecomposeライフサイクルでpropsを取得する方法は?

const enhance = compose(
    lifecycle({ 
    componentWillMount() { 
     const { props } = this // throws eslint error 
     console.log(this.props); // works, throws eslint error 
    }, 
    }), 
); 
+0

なぜ 'this'に* *参照文句eslintでしょうか?基本的にJavaScriptでは 'this'を回避することはできません。オブジェクトモデルの基本です。 – Pointy

+0

eslint-plugin-immutableのBeucase、no-thisと呼ばれるルールがあります。 – KadoBOT

+0

JavaScriptプロトタイプコードを使って作業しているなら、「this」を参照するのはかなり難しいと言いました。基本的には、そのようなコードを不可能にするか、または無意味に使用することになります。 – Pointy

答えて

0

それはlifecyclethisキーワードを使用せずにpropsにアクセスすることは不可能です。 同じ機能にライフサイクルメソッドを使用する必要がある場合は、独自のHOCを実装しても、thisを使用する必要がありますが、recompose/shouldUpdateのようにthisを書く必要はありません。

1

with-lifecycle HOCはこの目的のために正確に書かれています。あなたの例:

import withLifecycle from '@hocs/with-lifecycle'; 

const enhance = compose(
    withLifecycle({ 
     onWillMount(props) { 
      console.log(props); 
     }, 
    }), 
); 
関連する問題