2017-10-24 27 views
6

'da aynı ada sahip bir işlevi aşağıya aktarın Spread operatörü ile props'u kapatabilirim. yaniReaktifi

<Component x={props.x} y={props.y} /> 

eşittir:

<Component {...props} /> 

Ve aynı isimde bileşen tanımı kullanabilirsiniz.

Sorum, böyle bir işlevi nasıl iletebilirim? Aşağıda eşdeğer kod nedir?

<Component handleClick = {this.handleClick} 
    anotherHandleClick = {this.anotherHandleClick}/> 

Düzenleme: Çizgi üstü

çocuğa işlevini handleClick ve anotherHandleClick geçirir. <Component {...Fns} /> gibi bir şey var, böylece her fonksiyon aynı isimde sahne olarak aşağı doğru geçecek.

+2

Sorunuzun anladığımdan emin değilim o zaman derhal bunu yanıtladı son kod parçası. –

+1

@GhassenLouhaichi, bu gibi bir şey istiyor 'let handleClick = this.handleClick; ' fakat bir satırda, bilgim imkansız. –

cevap

6

Evet, Sen gibi işlemler yapabilir:

1) İlk yol:

render() { 
    const methods = { handleClick : this.handleClick }; 
    return(
     <Component {...methods} /> 
    ) 
} 

2) İkinci yol:

herhangi bir ekstra varible dile const methods = { handleClick : this.handleClick };

kullanmadan
render() { 
    return(
     <Component {...this.constructor.prototype} /> 
     // or 
     <Component {...this.__proto__} /> 
    ) 
} 

NOT: Bir çocuğa sınıfın tüm erişimi verir ikinci yöntem tercih edilmez, tüm

Sadece biz yollarını göstermek istiyorum .... yapıcı, her şeyi işlemek, bütün anlamı Yine de, fonksiyonlarının çok olması durumunda, ikinci yolla gidebiliriz, ama buna dikkat edin. İşte


yukarıdaki her ikisi için çalışan bir örnektir, lütfen bir göz: Eğer istedi çünkü

https://stackblitz.com/edit/react-parent-click-prop