Как мне вызвать метод из другого компонента класса в response.js
Использование реквизитов
«render prop» относится ктехника для совместного использования кода между компонентами React, использующими реквизит, значение которого является функцией "- actjs.org
Пример
app.js
import Button from '../../pathtoButton';
export class App extents Component {
constructor(props){
super(props)
this.state = {
name:'John'
}
}
sayHello(){
const { name } = this.message;
alert(`Hello ${name}`}
}
render(){
return (
<div>
<Button
value="click me"
whenClicked={this.sayHello}
</div>
);
}
}
button.js
export class Button extents Component {
constructor(props){
super(props)
this.state = {
style:{background:'red', color:'white'},
}
}
render(){
const { style } = this.state;
const { whenClicked, value} = this.props;
return (
<div>
<button style={style} onClick={whenClicked}>{value}</button>
</div>
);
}
}
Объяснение
В app.js
мы импортировали компонент <Button/>
и, используя props
, мы передалиметод от app.js
"sayHello
" до созданной нами опоры, называемый whenClicked
. В button.js
мы ссылаемся на this.props.whenClicked
и передаем его в свойство onClick
.
sayHello
isтеперь используется совместно двумя компонентами, потому что мы передали метод в качестве опоры компоненту <Button/>
.