В Reactjs, если у меня есть два дочерних компонента компонента App, могу ли я принимать входные данные от одного компонента и выводить их в другом дочернем компоненте?
class App extends Component{
render(
<Input/>
<Output/>
)
}
Input = () => { //input }
Output = () => { //output }
У вас есть сценарий №2, связанный с вопросом.





Это просто. Используйте одно и то же значение состояния для обоих компонентов в родительском компоненте:
class App extends Component{
constructor(props){
super(props);
this.state = {
value: ''
}
onValueChange = thisonValueChange.bind(this);
}
onValueChange(e) {
e.preventDefault();
setState({
value: e.target.value
});
}
render(){
return(
<Input value = {this.state.value} onChange = {this.onValueChange} />
<Output value = {this.state.value}/>
);
}
}
Input = (props) => {
<input value = {props.value} onChange = {props.onValueChange}>
}
Output = (props) => <div>{props.value}</div>);
Вы можете обрабатывать данные в компоненте приложения через состояние, передав обработчик компоненту ввода. а затем передайте значение состояния компоненту вывода, например
const Input = props => <input onChange = {props.handleChangeEvent} />
const Output = props => <span>{props.data}</span>
class App extends Component {
state = {data:""}
handleChangeEvent = e => {
this.setState({ data: e.target.value })
}
render() {
return (
<div>
<Input handleChangeEvent = {this.handleChangeEvent} />
<Output data = {this.state.data} />
</div>
)
}
}
`export class Parent extends React.Component{
constructor(props){
super(props);
this.state = {
name:'',
sendData:false
}
}
render(){
return (<div><input type = "text" onChange = {(event)=>
{this.setState({
name:event.target.value,
})
})
/>
//sendData can be made true on a button click
{this.state.sendData ?(<div><Child name = {this.state.name}
/>
</div>):null}
</div>)}
}`
Отобразите данные Родителя в дочернем компоненте.
`export class Child extends React.Component{
render(){
return (<div>Name is :{this.props.name}</div>)
}
}`
Возможный дубликат ReactJS Два компонента взаимодействуют друг с другом