0
私は、ユーザーが削除できるようになる1「メニュー項目」で「アイコンメニュー」を追加したいのWebPACK + ReactJSプロジェクトReactJS +マテリアルUIの奇妙な行動
内部の材質UIを持つテーブルを作成していますラインとリンクされたデータ。私は私のメニューリンクをクリックした場合
export default class GufreFile extends React.Component {
render(){
function alertTest() {
console.log('hello there');
}
return (
<TableRow>
//...
<TableRowColumn>
<IconMenu
iconButtonElement={<IconButton><MoreVertIcon /></IconButton>}
anchorOrigin={{horizontal: 'right', vertical: 'top'}}
targetOrigin={{horizontal: 'right', vertical: 'top'}}
>
<MenuItem primaryText="Delete" onTouchTap={ alertTest }/>
</IconMenu>
私はこのコードをしようとすると、すべてが完璧に動作し、私は「こんにちは」を得る:ここで(revelant)コードです。
しかし、私は次の操作を実行した場合:
export default class GufreFile extends React.Component {
render(){
function alertTest(data) {
console.log(data);
}
return (
<TableRow>
//...
<TableRowColumn>
<IconMenu
iconButtonElement={<IconButton><MoreVertIcon /></IconButton>}
anchorOrigin={{horizontal: 'right', vertical: 'top'}}
targetOrigin={{horizontal: 'right', vertical: 'top'}}
>
<MenuItem primaryText="Delete" onTouchTap={ alertTest(this.props.data.id) }/>
それは私がページをリロードしたときに、私のコンソールの内側に私の件のデータのidを表示いたします。
これはバグか、私が何か誤解したかどうかわかりません。
誰かが助けることができますか?
はthis
要素を参照するようあなたは、クラスのコンストラクタでハンドラをバインドする必要があり、事前に
はあなたにたくさんありがとう、私が持っていた理由は、私が今知っていますこれらの問題は早く!しかし、私の主な問題はまだ解決されていません:私は、次の 'alertTest =(data) - > { console.log(data); // onTouchTap = {this.alerttest(this.props.data.id)} 'を使用して、私はまだ私のコンソールのログにすべてのIDを取得します(onTouchTapとonClickでテストしました) – Jaeger
レンダリングの中でメソッドを呼び出すべきではありません。単に 'onTouchTap = {alertTest}'として渡してください。 –
もっと安全だと思いますが、やり直す方法はありますか? – Jaeger