Принимать входные данные в дочернем компоненте и выводить их в другом дочернем компоненте в Reactjs

В Reactjs, если у меня есть два дочерних компонента компонента App, могу ли я принимать входные данные от одного компонента и выводить их в другом дочернем компоненте?

class App extends Component{

    render(
       <Input/>  
       <Output/>  
    )

}

Input = () => { //input } 



Output = () => { //output }  

Возможный дубликат ReactJS Два компонента взаимодействуют друг с другом

Yury Tarabanko 29.05.2018 13:41

У вас есть сценарий №2, связанный с вопросом.

Yury Tarabanko 29.05.2018 13:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
144
3

Ответы 3

Это просто. Используйте одно и то же значение состояния для обоих компонентов в родительском компоненте:

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>) 
      }
    }`

Другие вопросы по теме