React路由器重定向不起作用
我设置了一个带有服务器端渲染和两个路由的react路由器,其中一个路由应该将我重定向到某个页面,当前是"/popular/php",但这不起作用,它不会将我重定向到任何地方,如果我删除重定向组件并只在"/“路径上渲染一些内容,那么它就可以工作。
我有这个路由文件。
import Home from './Home.js';
import Grid from './Grid.js';
import { fetchPopularRepos } from './api';
const routes = [
{
path: '/popular/:id',
component: Grid,
fetchInitialData: (path = '') => fetchPopularRepos (
path.split('/').pop()
)
}
]
export default routes
这是完成路由的App组件。如果我没有弄错的话,那么如果我点击"/“url,重定向组件应该会把我送到"/popular/php”页面,但是当我点击"/“url时什么也没有发生。
import React from 'react';
import Grid from './Grid.js';
import routes from './routes';
import { Route, Switch, Redirect } from 'react-router-dom'
import Navbar from './Navbar';
import Login from './Login';
class App extends React.Component {
render() {
return (
<div>
<Navbar />
<Switch>
<Route exact path="/" render={() => (
<Redirect to="/popular/php"/>)} />
{routes.map(({ path, exact, component: C, ...rest }) => (
<Route
key={path}
path={path}
exact={exact}
render={(props) => (
<C {...props} {...rest} />
)}
/>
))}
</Switch>
</div>
)
}
}
export default App
Server.js
import express from 'express';
import cors from 'cors';
import { renderToString } from 'react-dom/server';
import App from '../shared/App.js';
import React from 'react';
import serialize from 'serialize-javascript';
import { matchPath, StaticRouter } from 'react-router-dom';
import routes from '../shared/routes.js';
const app = express();
app.use(cors());
app.use(express.static('public'));
app.get('*', (req, res, next) => {
const activeRoute = routes.find(
(route) => matchPath(req.url, route)) || {};
const promise = activeRoute.fetchInitialData ?
activeRoute.fetchInitialData(req.path)
: Promise.resolve();
promise.then((data) => {
const context = { data };
const markup = renderToString(
<StaticRouter location={req.url} context={ context }>
<App />
</StaticRouter>);
res.send(`<!DOCTYPE html>
<html>
<head>
<title>SSR with RR</title>
<script src="/bundle.js"></script>
<script>window.__INITIAL_DATA__ = ${serialize(data)}</script>
</head>
<body>
<div id="app">${markup}</div>
</body>
</html>`)
}).catch(next);
})
app.listen(3000, () => {
console.log("Server is running on port 3000");
})
转载请注明出处:http://www.mingweiauto.com/article/20230526/989285.html
随机推荐
-
React路由器锚链路
我对一些组件使用react,并且在react根目录之外有一个导航菜单。当我点击菜单链接时,我想改变根目录中的react组件。我搜索了一下,发现react-router是一个解决方案,但我不知道该怎么做。还要注意的是,我不想使用Hash ur...
-
页面重定向后,activeClassName在react路由器NavLink中不起作用
我的应用程序中有react router NavLinks。其中之一如下:NavLink exact to = {{pathname: /, state: {genreId: 0}}} activeClassName = active-me...
-
用户登录后,React路由器未重定向
我有一个关于React Router和重定向的小问题。在我创建了一个受管理员保护的路由之后,我希望用户在登录后被重定向到user dashboard“。但我的问题是重定向不起作用。一切都是这样发生的:我的导航组件,但我认为这个组件还可以:i...
-
在react路由器v4中重定向经过身份验证的用户
我使用react js和firebase创建了一个简单的登录应用程序。当我注册时,它将在firebase中创建一个用户,我需要将用户定向到另一个页面我的Index.js文件,如下所示import React from react; impo...
-
React路由器专用路由异步使用效果
基本上,我面临的问题是,如果有人删除cookie,我的路由将无法正常工作。我正在使用Auth0和React路由器。我不明白的是为什么它会跳过if语句。不知道为什么它不会被点击,然后它会重定向到登录。调试代码:??供参考的实际代码:impor...
-
使用重定向/时,React路由器history.goBack不起作用
在React应用程序中,我使用Router的方式如下:let path=/; if(condition){ path=/dashboard }else if(condition){ path=/login } Router ...
-
React路由器重定向在专用路由中不起作用
我有这个私有路由组件,它只用于在用户登录时呈现组件,否则它应该重定向到登录页面。const PrivateRoute = ({ component: Component, ...rest }) = ( Route {...rest}...
-
专用路由React路由器始终重定向到第一路由
实际上,我可以通过点击按钮来引导到另一条路线,但不知何故,我不能通过更改URL来手动引导。每次我要更改URL (例如: localhost:3000/proposal)时,它总是将我引导到第一个Route。以下是按顺序排列的路由:Switc...
-
React路由器URL正常工作,但组件不起作用
React Router会更改URL,但不会更新组件。我检查了许多来自StackOverflow的解决方案,但它仍然不起作用。下面是我的代码: App.js:function App() { return ( div c...
-
未找到页面和默认主页始终重定向到home - React路由器
我有这个代码,我总是把它重定向到家的不存在的路由。我希望当不存在的路由被输入时重定向到/404,并且当没有或/被输入时它被重定向到主目录。 Switch Route exact path...