2017-04-13 15 views
0

この2つのコンポーネントがあり、渡された関数を呼び出す方法が不思議です。もし私がそれを渡せば、子供の中でそれへの参照があるので、私はそれにparemeterを渡したいときに問題が現れるので - その直ちに呼ぶ(これは明らかです)。このように子コンポーネントで渡された関数を正しく呼び出す方法

class Parent extends Component { 
    .... 
    fn = (arg) => {console.log(arg)} 
    render(){ 
    return (
     <Child myPassedFn={this.fn}>delete</button> 
    ) 
    } 
} 

class Child extends Component { 
render(){ 
    return (
     <button onClick={this.props.myPassedFn('lul')}>delete</button> 
    ) 
    } 
} 

とすぐコンポーネントChildのレンダリングとして、myPassedFn

が実行されますので、これはそれを実現するための正しいアプローチですか? method除く

onClick={() => this.props.myPassedFn('lul')} 

Onclickを、あなたが使用している方法:私は考えているようにしたいので、あなたが知っている、最も明確かつ適切な方法

class Child extends Component { 

childFn =() => { 
    this.props.myPassedFn('this is how i could pass, you little..') 
} 
render(){ 
    return (
     <button onClick={this.childFn}>delete</button> 
    ) 
    } 
} 

答えて

1

にまた、このようにそれを書くことができますメソッド呼び出し、それはreturn値です。

2番目の方法を使用することもできます。上の行はそれを省略したものです。

+0

本当にappriciate =) – ddeadlink

+0

レンダリングの中に匿名関数を定義すると、 'shouldComponentUpdate'を使ってレンダリングする子を最適化することが難しくなります。より良いアプローチは、コンポーネントがレンダリングされるたびに同じハンドラを使用する場合に '_handleClick'ハンドラを定義することです – thedude

関連する問題