第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

上下文 API 將狀態(tài)提升到更高的組件

上下文 API 將狀態(tài)提升到更高的組件

湖上湖 2022-06-09 19:25:50
我試圖讓我的導(dǎo)航欄根據(jù)應(yīng)用程序所在的頁面進(jìn)行更改,而不必為每個(gè)頁面創(chuàng)建單獨(dú)的導(dǎo)航組件。一旦用戶進(jìn)入新的“項(xiàng)目”頁面,我希望導(dǎo)航欄發(fā)生變化。我這樣做的方法是根據(jù) url 參數(shù)有條件地呈現(xiàn)導(dǎo)航欄元素。一旦用戶點(diǎn)擊進(jìn)入項(xiàng)目頁面,就會(huì)有一個(gè)url參數(shù)如localhost/project/movie. 但是,導(dǎo)航欄組件無法訪問match.params.projectId,只有項(xiàng)目頁面組件可以訪問它,因?yàn)樗挥趓eact-router的 Route 組件中。因此,我想創(chuàng)建一個(gè)存儲 url 參數(shù)的全局狀態(tài),以便我可以在導(dǎo)航欄組件中使用它來有條件地呈現(xiàn)該組件的元素。最高級別的 App 組件const App = () => {  return (    <div className="app">      <Header/>      <Switch>        <Route exact path="/" component={Home}/>        <Route exact path="/project/:projectId" component={ProjectOverview}/>      </Switch>    </div>  );}較低級別的項(xiàng)目頁面組件const ProjectOverview = ({ match }) => {    useEffect(() => {        window.scrollTo(0, 650);    }, []);    let project = {};    if(match.params.projectId === 'movie'){        project = {            p: 'Browse your favorite Movies, TV shows, and actors. Search for specific movies, shows or actors by date, rating, region and other categories. Browse the latest and greatest films and to find information about its actors, crew, and reviews. Rate and favorite Movies, TV shows and actors while having access to them through a user account. Login / Authentication.',            img: 'http://www.technologies.com/images/cloud-summary.png',            gif: 'https://giphy.com/media/mUgG6FZuWN9V1/giphy.gif',            list: ['React', 'Redux', 'Hooks', 'TMDB API', 'Sass', 'React Router']        }    } else if(match.params.projectId === 'ecommerce'){        project = {            p: 'Something else',            img: 'http://www.technologies.com/images/cloud-summary.png',            gif: 'https://giphy.com/media/IgASZuWN9V1/giphy.gif',            list: ['React', 'Redux', 'Hooks', 'TMDB API', 'Sass', 'React Router']        }    }    return(我知道提供者必須在應(yīng)用程序組件中環(huán)繞標(biāo)題(導(dǎo)航欄)組件,但所需的狀態(tài)值(match.params.projectId)只能在項(xiàng)目頁面組件中找到。我想知道如何讓提供者的值成為項(xiàng)目頁面組件中的任何 url 參數(shù)。如果我的問題對任何人來說都太混亂了,我會(huì)嘗試進(jìn)一步澄清我的問題。謝謝
查看完整描述

1 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

我不知道這是否是最好的解決方案,但是在我必須根據(jù)路線更改導(dǎo)航標(biāo)題的應(yīng)用程序中,我執(zhí)行了以下操作:


function App() {


  const [title, setTitle] = useState('');


  return <Router>

      <Navbar title={title} />

       <Switch>

         <Route path="/product/:id" exact render={props => <ProductPage {...props}  setTitle={setTitle} />} />

       </Switch>

       </Router>

}

在 ProductComponent 中:


function ProductionComponet({setTitle, match}){

 useEffect(()=>{

   setTitle(`product ${match.params.id}!`)

 },[])

}


查看完整回答
反對 回復(fù) 2022-06-09
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號