Компонент React Позволяет Избежать Двойного Рендеринга

#reactjs #routes #siblings

Вопрос:

Мне нужно передать реквизиты от дочернего компонента родительскому, чтобы позже я мог передать реквизиты родственному компоненту. Дети живут по своему собственному маршруту /регистрации и /списку догадок. Моя проблема в том, что для передачи реквизитов (с использованием обратного вызова) от дочернего элемента к родительскому, мне нужно вернуть дочерний элемент в родительском компоненте, когда я посещаю маршрут дочернего компонента, компонент отображается дважды. Я хочу найти способ избежать этого, имея в виду, что моя конечная цель-передать реквизит между братьями и сестрами.

Мой код выглядит так, как это приложение.jsx

 return (
    <>
    <Router>
    <div style={{width:100 "vw", height:80, background:"lightblue"}}>
     
      <Registration setEventInfo={setEventInfo}/>
      <Gueslist wedding={wedding}/>
    </div>
  
    <Switch>
      <Route path="/about" exact component={About}></Route>
      <Route path="/" exact  component={Login}></Route>
      <Route path="/registration" exact component={Registration}></Route>
      <Route path="/gueslist" exact component={Gueslist}></Route>

      <Route path="*" exact component={Notfound}></Route>
    </Switch>
  </Router>
  </>
  );
}

export default App;
 

Регистрация дочернего компонента выглядит следующим образом:

 function Registration(props){
    let history=useHistory()
    const [weddingName, setWeddingName]=useState('');
    const [groom, setGroom]=useState('');
    const [bride, setBride]=useState('');
    const [location, setLocation]=useState('');
    const[date, setDate]= useState('');

    const handleSubmit= (e)=>{

        e.preventDefault()
       props.setEventInfo({
           weddingName:weddingName,
           groom:groom,
           bride:bride,
           location:location,
           date:date

       })

    }
    


    return(

        <div>
            <form onSubmit={handleSubmit}>
                <label htmlFor="">Name the event</label>
                    <input type="text" onChange={(e)=>setWeddingName(e.target.value)} value={weddingName} placeholder="Joe and Jane Wedding" />
                <label htmlFor="">Groom</label>
                    <input type="text" onChange={(e)=>setGroom(e.target.value)} value={groom} />
                <label htmlFor="">Bride</label>
                    <input type="text" onChange={(e)=>setBride(e.target.value)}value={bride} />
                <label htmlFor="">Location</label>
                    <input type="text" onChange={(e)=>setLocation(e.target.value)}value={location} />
                <label htmlFor="">Date</label>
                    <input type="date" onChange={(e)=>setDate(e.target.value)} value={date} />


                 <button>Get Started</button>
            </form>
           
        </div>
    )
}
export default Registration