亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ReactJS,功能組件。所以我想根據點擊 <Link> 來設置狀態

ReactJS,功能組件。所以我想根據點擊 <Link> 來設置狀態

ibeautiful 2022-10-21 15:22:30
例如,我有一個菌株列表,每個菌株都位于從 react-router-dom 導入的組件中。我希望此鏈接將我帶到 Route path='/strains/{strain}'。在這個頁面上,我只想渲染被點擊的菌株的名稱,但是當點擊一個鏈接時,所有菌株的名稱都會被渲染。這是我顯示所有路線的代碼。import React, {useEffect, useState} from 'react';import { Route, Link } from 'react-router-dom';import axios from 'axios';import UserCreation from './components/UserCreation';import Login from "./components/Login";import StrainCard from './components/StrainCard';import { Container } from "reactstrap";import NavBarComponent from "./components/NavBarComponent";import SavedStrain from './components/SavedStrain';import Strain from './components/Strain';import StrainDetails from './components/StrainDetails';function App() {  const [strains, setStrains] = useState([]);  const [savedList, setSavedList] = useState([]);  const [strain, setStrain] = useState([]);    useEffect(() => {    const getStrains = () => {      axios        .get('http://strainapi.evanbusse.com/CEIl7eN/strains/search/all')        .then(response => {          console.log(response);          setStrains(response.data);        })        .catch(error => {          console.error('Server Error', error.response);        });    }    getStrains();  }, []);console.log(strains)  useEffect(() => {    setStrain(Object.keys(strains).slice(0, 20))  }, [strains])  console.log(strain)  const addToSavedList = strain => {    setSavedList([...savedList, strain]);  };  return (    <Container className="App">        <NavBarComponent />      <Route exact path='/'>        <Link to='/login'>Log in</Link>      </Route>        <Route exact path='/login'>            <Login />        </Route>      <Route exact path='/signup'>        <UserCreation />      </Route>  );}export default App;
查看完整描述

1 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

你想要的是一種訪問路由參數的方法(在你的情況下是應變),像這樣在渲染回調中將路由器道具傳遞給你的組件

<Route exact path='/strains/:strain' render = {(props) => <Strain {...props} strains={strains} addToSavedList={addToSavedList} />} />

現在在您的應變組件中,您可以像這樣訪問參數

const Strain = ({match}) => { 
  console.log(match.params)
  }


查看完整回答
反對 回復 2022-10-21
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號