SPA на реакт, как прокинуть пропс

105
09 октября 2021, 03:40

компонент Popular и TopRated рендерить данные с помощью компонента RenderListOfElement. При клике на какой-либо элемент списка мне надо пробросить ИД этого элемента в компонент TvShowInfo

  const RenderListOfElement = props => {
  let [tvShowList, setTvShowList] = useState([]);
  let [isLoading, setIsLoading] = useState(true);
  let url = props.fetchUrl;
  const fetchDataByUrl = async url => {
    const data = await getData(url);
    setTvShowList(data);
    setIsLoading(false);
  }
  useEffect(() => {
    fetchDataByUrl(url);
  }, [url]);
  const setFilmID = id => {
    FILMID = id
    console.log(FILMID)
  }
  return isLoading ? (
    "lading"
  ) : (
      <>
    <ul>
      {tvShowList.results.map(({ original_name, id }) => (
        <li key={id} onClick={() => {setFilmID(id)}}>
          <Link to={`/info`}>{original_name}</Link>
        </li>
      ))}
    </ul>
    </>
  );
};

const App = () => {
return(
    <>
    <Router>
<Switch>
  <Route exact path='/'  component={Pagination, Popular} />
  <Route path='/popular' component={Popular}/>
  <Route path='/toprated' component={TopRated}/>
  <Route path='/info' component={TvShowInfo} />
</Switch>
    </Router>   
    </>
)

}

export const TvShowInfo = props => {
  console.log(props)
    return(
        <div>sss</div>
    )
}
Answer 1

Пропишите ID в Link:

{tvShowList.results.map(({ original_name, id }) => (
    <li key={id} onClick={() => {setFilmID(id)}}>
      <Link to={`/info/${id}`}>{original_name}</Link>
    </li>
  ))}

Прокиньте ID в роутере:

<Route path='/info/:id' exact component={TvShowInfo} />

В компоненте TvShowInfo можете получить доступ к ID через match.params.id .

READ ALSO
Почему запрос долго выполняется при взаимодеййствии с веб-фомрой

Почему запрос долго выполняется при взаимодеййствии с веб-фомрой

У меня есть веб-форма, которая обращается в базе данных к таблице, в которой почти 50 полей и записей свыше 8 миллионовБывают случаи, при которых...

120
Использование Mutex C#

Использование Mutex C#

Есть класс, выполняющий роль общего ресурса:

112
Как передать в функцию название элементов формы?

Как передать в функцию название элементов формы?

Хотел бы использовать универсальную функцию для вывода гистограммыТ

142