2017-06-12 8 views
0

申し訳ありませんがタイトルが私の質問をはっきりと示していない場合。メニューのリンクコンポーネントの1つを無効にするにはどうすればいいですか?

<div className={"floated left column header-items " + this.props.active}> 
    <Link onClick={this.headerItemClicked.bind(this)} className='home' to="/home" style={comStyles().headerItem}>Home</Link> 
    <Link onClick={this.headerItemClicked.bind(this)} className='setting' to="/setting" style={comStyles().headerItem}>Setting</Link> 
</div> 

いくつかのリンクがあるヘッダーコンポーネントがあります。私が今したいのは、現在のページがホームであるかどうかをチェックすることです。その後、ホームリンクは無効になります。

これを行うには、classnameのパスを確認することをお勧めします。これを達成するためのもっと簡単な方法があれば必要なのでしょうか?次のように

私のソリューションは、次のとおりです。

headerItemClicked(e){ 
     if(e.target.className == this.props.active){ 
      e.preventDefault(); 
     }  
    } 

答えて

2

私はCSSにpointer-event方法のように。 まず、Linkをハードコードしないで、配列を作成してループして、代わりにLinkをレンダリングしてください。

次に、あなたの部品のようなものでなければなりません:

const routes = [ 
 
{ 
 
    name: 'home', 
 
    path: '/home' 
 
}, 
 
{ 
 
    name: 'about', 
 
    path: '/about' 
 
}]; 
 

 
const listOfLink = routes.map((route) => (
 
    <Link to={route.path} disabled={this.props.active === route.name}>{route.name}</Link> 
 
);

して、CSSを追加します。

a[disabled] { pointer-events: none; }

+0

私はJSに新しいですが残念。上記のコードをかっこで囲み、ハードコードのコードを置き換えることができますか?それは私がそうするときにエラーを示します – HUNG

+0

私はマップを使用するように変更したときに動作します;) – HUNG

+0

ああ私の悪い。それを固定した。 –

関連する問題