Как передать параметр от родительского компонента к дочернему компоненту внутри condition case в React js

#javascript #reactjs #react-router #jsx

#javascript #reactjs #react-маршрутизатор #jsx

Вопрос:

Я пытаюсь передать состояние от родительского компонента к дочернему компоненту и внутри тега ссылки, которые меняют маршрут, но в дочернем компоненте я получаю и неопределенное значение. Есть ли способ отправить параметр, а также изменить маршрут одновременно?

 
class Teacher extends Component {

   constructor(props) {
    super(props)

    this.state = {
      showComponent: false,
      allStudents: ["a","b", "c", "d"],
    }
  }
  onButtonClick() {
    this.setState({showComponent: true});}

render() {
    console.log(this.state.allStudents " student list")
    return (

     <Link to={"/student"}>
            <Button onClick={()=> {this.onButtonClick()}}>Button</Button>
           

        {this.state.showComponent amp;amp;
           <CreateExam test={this.state.allStudents} /> 
        } 
     </Link>

 </div>
)}

  

Дочерний компонент

 class CreateExam extends Component {
  constructor(props) {
    super(props);
  }
  render() {
    console.log(this.props.allStudents   " student list") 

    return (
      <div className="teacher">
      </div>

    );
  }

  

Ответ №1:

Внутри вашей функции onButtonClick вы заменяете свое состояние на {showComponent: true} . Поэтому allStudents теряется.

Вместо этого функция должна быть:

 onButtonClick() {
    this.setState(prevState => ({...prevState, showComponent: true}));
}
  

Также используйте то же имя реквизита, что и то, что вы отправляете от родительского компонента.

 <CreateExam test={this.state.allStudents} /> 

console.log(this.props.test   " student list") 
  

Обратитесь: https://jsfiddle.net/t9j7hmdb /