簡體   English   中英

反應路由器重定向到組件不重定向

[英]React Router Redirect to component not redirecting

我需要一個簡單的重定向到一個組件,但它不知道為什么。 這是代碼:

const HomePage = () => {

const [videos, setVideos] = useState([]);

const videoClicked = (video) => {
    return <Redirect to='/video' />
}

if(videos === []){
    return <div>Loading ...</div>
}

return (
    <div>
        {videos.map(video => (
            <div onClick={() => videoClicked(video)}>
                <VideoThumbnail video={video} />
            </div>
        ))}
    </div>
)
}

export default HomePage

我的主頁 function 中有一個 useEffect,我沒有包含在這個給出videos值的片段中。 它工作,當我 onClick div 它調用videoClicked重定向不起作用。 這是我的路由器:

  const App = () => {
     return (
        <HashRouter>
          <Switch>
            <Route exact path="/video" component={VideoPage} />
            <Route path="/" component={HomePage} />
          </Switch>
        </HashRouter>
      )
    }

此外,當我完成這項工作時,是否可以重定向到組件並通過它傳遞道具,而不僅僅是在to標記中傳遞一個字符串。

您可以擁有一個新的 state 並基於此重定向:

const HomePage = () => {

    const [videos, setVideos] = useState([]);
    const [clicked, setClicked] = useState(false);

    const videoClicked = (video) => {
        setClicked(true);
        // return <Redirect to='/video' />
    }

    if (videos === []) {
        return <div>Loading ...</div>
    }

    return (
        clicked ? <Redirect to={{
         pathname: '/video',
         state: { someData: 'test' }
        }} /> : (
            <div>
                {videos.map(video => (
                    <div onClick={() => videoClicked(video)}>
                        <VideoThumbnail video={video} />
                    </div>
                ))}
            </div>
        )
    )
}

export default HomePage

您可以在重定向到的組件中使用props.location.state.someData

您可以考慮改用 History HTML5 :) 簡單明了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM