2017-11-17 20 views
0

TypeError: Cannot read property 'props' of undefinedを取得します。 propsを受け取るには、Liコンポーネントが必要です。私は途中でスタイル付きコンポーネントを使用しています。マップの閉鎖の中で未定義の「小道具」

const Li = styled.li` 
    border-top: 0 none; 
`; 

class Popular extends Component { 
    render() { 
     var languages = ['All', 'Javascript', 'Java', 'Python']; 
     return (
      <ul className='list-group'> 
       {languages.map(function(lang){ 
        return (
         <Li className={`list-group-item p-2 ${this.props.className}`}> 
          {lang} 
         </Li> 
        ) 
       })} 
      </ul> 
     ); 
    } 
} 

export default Popular; 
+1

あなたの問題は 'languages.map(function(lang)'は 'languages.map((lang)=>)'でなければならないと思います... –

答えて

3

あなたはpopularクラスにlanguages.mapのコールバックをバインドする必要があります。あなたはこの

{languages.map((lang) => { 

のように矢印の機能を使用するか、ちょうどこの

{languages.map(function(lang){ 
     ... 
}, this)} 

のようなマップ関数の第二引数としてthisを渡すか、またはあなたはそれがこの

{languages.map((function(lang){ 
     ... 
}).bind(this))} 
よう bind機能を使用してバインドすることができますすることができますいずれか
+2

'.bind'を呼び出す必要はありません。パス 'これは '.map'の第2引数として:languages.map(function(lang){...}、this);'です。 –

+0

@FelixKlingうん、忘れてしまった。更新しました。 Thanx –

関連する問題