2017-08-31 2 views
2

私はマテリアルUIを使用している素材UIからのタブでアクティブなタブを設定し、以下から分かるように、私はプログラム的に複数のタブを作成しています反応するように:はどのようにプログラム的

return (
    <div> 
     <Tabs> 
      {this.state.elements.map(elem => { 
       return (
        <Tab key={elem.elemID} label={elem.name} > 
         <div> 
          // rest removed for brevity 
         </div> 
        </Tab> 
       ) 
      })} 
     </Tabs> 
    </div> 
); 

この作品を、そしてタブがあります問題は、デフォルトでは、コンポーネントがレンダリングされるときに、最初のタブがアクティブなものであるということです。一方、私は、私が小道具から得たid値に基づいてプログラムでアクティブなタブを設定したいと思います。したがって、基本的にthis.props.selectedID === elem.elemIDの場合、コンポーネントをレンダリングするときにそのタブをアクティブなタブにします。もちろん、コンポーネントがレンダリングされたら、ユーザーは自由にクリックしてタブを切り替える必要があります。どのようにそれを達成するためのアイデア?

+0

どのようにあなたの ''と ''コンポーネント、すなわち仕事にいくつかのより多くの情報が必要:何が ''ときに起こりますがあなたは特定のタブをクリックしますか? – Drum

答えて

2

この制御コンポーネントにするTabsTabvalue小道具を使用します。

<Tabs value={this.props.selectedID}> 
    {this.state.elements.map(elem => { 
      return (
       <Tab key={elem.elemID} label={elem.name} value={elem.elemID}> 
        <div> 
         // rest removed for brevity 
        </div> 
       </Tab> 
      ) 
     })} 
</Tabs> 
+0

これは、最初のレンダリングで機能します。しかし、今は他のタブをクリックすると、クリックされて強調表示されますが、その内容は表示されません。最初に選択したタブの内容のみが表示されます。 – typos

+0

タブをセットアップする必要があります。タブをクリックすると 'selectedID'小道具が変更されます。 – thedude

+0

解決策は見つかりましたか? – user7334203

関連する問題