gpt4 book ai didi

reactjs - React Router 和 Express 冲突

转载 作者:行者123 更新时间:2023-12-04 17:52:10 26 4
gpt4 key购买 nike

我有我希望 React Router 处理的路径,我还有一个快速的 API 后端,我从 React 应用调用它来执行一些安全的 API 调用。

/#/ - 想要在此处提供应用程序
/#/:id - 应用程序的唯一 URL,我使用该 ID 从 React 调用某些快速端点。
* - 所有 Express REST 端点

express app.js:

app.use(middleware);
app.use(require('webpack-hot-middleware')(compiler, {
log: console.log
}));
app.use('/api', [router_invokeBhApi]);
app.get('/#/*', function response(req, res) {
res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'dist/index.html')));
res.end();
});
app.use(express.static(path.join(__dirname, '/dist')))

我的 React 路由器组件:

export default (
<Route path="/" component={App}>
<IndexRoute component={HomePage} />
<Route path="/:id" component={ConsentForm} something="dope"/>
</Route>
);

事情是这样的:
- 转到 localhost:8000 为应用程序提供 HomePage 组件
- 转到 localhost:8000/#/ 也为应用程序提供 HomePage 组件
- 转到 localhost:8000/example 给我 Cannot GET/example 这意味着 express 正在工作
- 转到 localhost:8000/api 给我一个我从 express 发送的测试 JSON 对象,这是正确的。
- 转到 localhost:8000/#/somehashcode 仍然给我 HomePage 组件,而它应该给我 ConsentForm 组件。

我使用 React Dev 工具检查了 Router 组件:
- RouterContext 组件有一个名为 routes 的对象,在 routes[0] 中有一个 childRoutes,它有路径 /:编号routes[0] 还有一个路径 / 告诉我 React Router 正确加载了所有路由??

很迷茫...

我渲染整个应用程序的 React 文件:

import 'babel-polyfill';

import React from 'react';
import ReactDOM from 'react-dom';
import { Router, browserHistory } from 'react-router';

import Routes from './shared/components/Routes';

import './shared/base.css';
import './shared/customInput.css';


const ROOT_ELEMENT = 'app';

ReactDOM.render((
<Router history={browserHistory}>
{Routes}
</Router>
), document.getElementById(ROOT_ELEMENT));

最佳答案

我终于明白了!

在 React Router 组件中,将 :id 路由更改为:

<Route path="/redirect/:id" component={ConsentForm} something="dope"/>

在 Express 中,app.js 将 React 服务更改为:

app.get('/redirect/*', function response(req, res) {
res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'dist/index.html')));
res.end();
});

从中学到两件事:
- 在 route 使用# 不起作用。不知道为什么。
- 在 React 端也明确说明路由。

很奇怪,或者我可能会脱离一些不成熟的知识。任何能为我指明正确方向的资源都会很棒。

很确定其他人在同时使用 Express 和 React 时会遇到这个问题。

关于reactjs - React Router 和 Express 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com