2017-06-05 2 views
1

私は現在、(TableHeaderコンポーネント)テーブルヘッダーをonClickハンドラでレンダリングしていますが、これは発生時にヘッダーの値を取得し、親コンポーネントの状態を取得します子はTableHeaderです)。親コンポーネントからのコンテキストを維持しながらレンダリングを避ける

親コンポーネントのコンテキストへのアクセスを維持しながら、TableHeaderのrenderメソッド内でonClick関数をバインドしないようにしたいと考えています。現在私が持っているもの:

render() { 
    return (
    ... 
    <tr> 
     {columns.map(col => <th key={col} onClick={this.props.onClick.bind(null, col)} {...hoverHandlers}>{col}</th>)} 
    </tr> 
) 
} 

各関数に渡される関数は、単に列の値をとり、それに応じてソートするだけです。 、その関数がバインドされた親コンポーネントのコンストラクタで

this.sortColumns = this.sortColumns.bind(this); 

はその後渡さ:

<TableHeader onClick={this.sortColumns} /> 
+0

"col"とは何ですか?私はレンダリング()を使用して "col"にバインドする必要がある何らかの理由があるかどうかを判断しようとしていますが、それについては十分に分かりません。それを割り当てるコードを表示できますか? –

+0

@Jose、ここでいくつかの情報が必要です。あなたのコードの断片をいくつか投稿できますか? – VivekN

+1

@ErikHermansen申し訳ありませんが、colはマップされている配列から来ています。ペーストするときに切り刻まれました。更新されます。 – Jose

答えて

1

を変更sortColumns()パラメータとしてcol変数を取ること。そして変数を渡すようにrender()を更新します。

render() { 
    return (
    ... 
    <tr> 
    {columns.map(col => <th key={col} 
     onClick={function() { this.props.onClick(col) } } 
     {...hoverHandlers}>{col}</th>)} 
    </tr> 
    ) 
} 
関連する問題