2017-05-29 15 views
10

tarafından kullanılacak:Beklenen 'bu', eslint 'bu' sınıf yöntemiyle İşte <p></p> sınıfım 'getUrlParams' dir tarafından kullanılmak üzere "Beklenen şikayet Benim sınıfımda sınıf yöntemiyle

class PostSearch extends React.Component { 
    constructor(props) { 
    super(props); 
    this.getSearchResults(); 
    } 

    getUrlParams(queryString) { 
    const hashes = queryString.slice(queryString.indexOf('?') + 1).split('&'); 
    const params = {}; 

    hashes.forEach((hash) => { 
     const [key, val] = hash.split('='); 
     params[key] = decodeURIComponent(val); 
    }); 

    return params; 
    } 

    getSearchResults() { 
    const { terms, category } = this.getUrlParams(this.props.location.search); 
    this.props.dispatch(Actions.fetchPostsSearchResults(terms, category)); 
    } 

    render() { 
    return (
     <div> 
     <HorizontalLine /> 
     <div className="container"> 
      <Col md={9} xs={12}> 
      <h1 className="aboutHeader">Test</h1> 
      </Col> 
      <Col md={3} xs={12}> 
      <SideBar /> 
      </Col> 
     </div> 
     </div> 
    ); 
    } 
} 

ne bu bileşeni çözmek veya refactor iyi yaklaşım nedir?

+0

diyor ESLint hatası olarak this fonksiyonu bağlamak gerekir vücut işlevi içinde bu kullanılır? – Li357

+0

Bu, bir kertme hatası gibi görünüyor. Bu hatayı istemiyorsanız, linting kuralını her zaman devre dışı bırakabilirsiniz. Hatayı alıyorsunuz çünkü getUrlParams sadece modül kapsamındaki yardımcı bir işlev olabilir. – loganfsmyth

+0

Bu aslında bir yardımcı fonksiyonudur, bu hatayı düzeltmek ve önlemek için en iyi yol nedir? –

cevap

5

Bu, class-methods-use-this bir ESlint kural mi göreceğiz.

yöntemden getUrlParams ayıklamak ve int koyabilirsiniz o yardımcısı ya da static yapmak için.

Aynı zamanda, this.props.location.search yöntemini yöntem içinde taşımak ve bu nedenle this.getUrlParams() yöntemini parametre olmadan çağırmak, yalnızca bir kez kullandığınız gibi.

getUrlParams() { 
    const queryString = this.props.location.search; 
    ... 
    return params; 
    } 

bir son seçenek bu ESlint kuralı devre dışı bırakmak olacaktır: gibi

Bu nedenle, bu görünebilir.

+0

Bu hatadan kurtuldu, yardımlarınız için teşekkürler. Bu hataların neden sadece benim referansım için olduğunu biliyor musunuz? –

+0

Cevabımı güncelledim; Bu bir ESlint kuralıdır, bkz. http://eslint.org/docs/rules/class-methods-use-this. – Ioan

+0

Parametrelerden kaçınamadığınızda kalıcı bir düzeltme var mı? –

0

Başka bir kullanım durumu olabilir.

Diyelim ki yöntem handlePasswordKeyUpdenilen var diyelim. İşlev gövdesi böyle görülebilir. Kod yukarıda bu hatayı tetikleyecektir. Yani en azından

handlePasswordKeyUp(){ 
    this.setState({someState: someValue}) 
} 
0

Eğer hata noktasını yapar "Expected 'this' to be used by class method 'getUrlParams'

getUrlParams = (queryString) => { .... } 
İlgili konular