Я передаю объект из родительского компонента в дочерний компонент, и в дочернем компоненте есть несколько полей ввода, которые обрабатываются в родительском компоненте следующим образом:
import React, { Component } from "react";
import Child from 'path';
class parent extends Component {
constuctor(props){
super(props);
this.state = {
obj :{
//object
}
}
this.handlerInput = this.handlerInput.bind(this);
}
handlerInput(e){
//logic to update state obj
}
render(){
return(
<div className = "content">
<Child changeHandle = {this.handlerInput} />
</div>
);
};
}
export default parent;
import React, { Component } from "react";
class Child extends Component {
render(){
return(
<div className = "content">
<input type = "text" onChange = { this.props.changeHandle } name = "xyz" />
</div>
);
};
}
export default Child;
Теперь давайте предположим, что мне нужно использовать дочерний компонент в нескольких местах, поэтому каждый раз, когда я должен определять функцию changeHandle в родительском компоненте?
Любое предложение обновить родительское состояние от дочернего?
Возможный дубликат Как передать данные от дочернего компонента к его родителю в ReactJS?
Вы можете попробовать что-то вроде этого
import React, { Component } from "react";
import Child from "./Child";
class Parent extends Component {
constructor(props){
super(props);
}
state = {
name: 'Parent',
};
changeHandle = e => {
this.setState({ name: e.target.value });
};
render() {
return (
<div>
<Child changeHandle = {this.changeHandle} name = {this.state.name}/>
</div>
);
}
}
export default Parent;
import React, { Component } from "react";
class Child extends Component {
constructor(props) {
super(props);
}
state = {
name: "Child"
};
render() {
return (
<div className = "content">
<input
type = "text"
onChange = {this.props.changeHandle}
name = "xyz"
value = {this.props.name}
/>
</div>
);
}
}
export default Child;
Вы можете использовать Redux для этого.