2017-10-24 19 views
6

Mogę przekazać props z operatorem rozprzestrzeniania. tjPrzekaż funkcję o tej samej nazwie w React

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

jest równa:

<Component {...props} /> 

I możemy używać go w definicji składnika o tej samej nazwie.

Moje pytanie brzmi: jak mogę przekazać taką funkcję? Jaki jest równoważny kod poniżej?

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

Edit:

Powyższa linia przejdzie w dół funkcję handleClick i anotherHandleClick do dziecka. Czy jest coś takiego jak <Component {...Fns} />, więc każda funkcja przejdzie w dół jako rekwizyty o tej samej nazwie.

+2

nie jestem pewien, czy rozumiem pytanie, bo poprosił go natychmiast odpowiedział jej ostatni fragment kodu. –

+1

@GhassenLouhaichi on chce coś takiego 'niech handleClick = this.handleClick; ' ale w jednym wierszu, co według mojej wiedzy jest niemożliwe. –

Odpowiedz

6

Tak, można to zrobić jak:

1) Pierwszy sposób:

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

2) Drugi sposób:

Bez użycia żadnych dodatkowych varible const methods = { handleClick : this.handleClick };

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

UWAGA: Druga metoda nie jest korzystna, ponieważ daje dostęp wszystkie klasy do dziecka, to znaczy wszystko wszystkim, konstruktor, czyni wszystko ....

Chcę tylko pokazać sposoby my CAN Osiągnąć, nadal, jeśli istnieje wiele funkcji, możemy iść z drugiej strony, ale uważaj z tym.


Oto przykład pracuje zarówno z powyższym proszę spojrzeć:

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

Powiązane problemy