gpt4 book ai didi

reactjs - React 路由器 URL 参数不起作用

转载 作者:行者123 更新时间:2023-12-03 14:20:17 27 4
gpt4 key购买 nike

我无法让 React Router 中的 URL 参数功能正常工作,任何见解都会有帮助!我尝试使用“react-router-dom”而不是“react-router”,但我得到了这个人遇到的错误:https://github.com/ReactTraining/react-router/issues/1799

当我执行 localhost:8000 时,应用程序可以正常工作。当我访问 localhost:8000/123 时,浏览器会按原样呈现 index.html ,但不会做出任何反应。 Express 是否会干扰 React?在 Express 中,我所拥有的只有以下内容:

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

这是我的ma​​in.js:

import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, browserHistory } from 'react-router';
import Routes from './shared/components/Routes';
const ROOT_ELEMENT = 'app';
ReactDOM.render((
<Router history={browserHistory}>
{Routes}
</Router>
), document.getElementById(ROOT_ELEMENT));

我的routes.js:

import { Route, IndexRoute, Link } from 'react-router';

import App from './App';
import HomePage from '../../pages/home/page';
import AboutPage from '../../pages/about/page';

const Child = ({ match }) => (
<div>
<h3>ID: {match.params.id}</h3>
</div>
)

export default (
<Route path="/" component={App}>
<IndexRoute component={HomePage} />
{/* <Route path="about" component={AboutPage} /> */}
<Route path="/:id" component={Child} />
</Route>
);

我的 Home 组件在不同的文件中定义如下(省略所有导入和生命周期函数):

export default React.createClass({
render: function() {
{* bunch of JSX goes here *}
}
});

根据要求,我的index.html文件:

<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Consent Form</title>
<meta name="description" content="Privacy Consent Webform">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--Google Material Design Icons-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<div id="app"></div>
</body>
</html>

由于我的 webpack 配置,html 没有将 bundle 作为脚本标记( bundle 已注入(inject)!)(以下代码只是配置的一部分):

entry: [
'webpack-hot-middleware/client',
'bootstrap-loader',
path.join(__dirname, 'src/main.js')
],
output: {
path: path.join(__dirname, '/dist/'),
filename: '[name].js',
publicPath: '/'
},
plugins: [
new HtmlWebpackPlugin({
template: 'src/index.tpl.html',
inject: 'body',
filename: 'index.html'
})

最佳答案

当您向应用程序添加新路由时,您不能依赖热重载来注入(inject)新路由+组件。我必须按 CTRL+C 并再次运行 npm start

这解决了问题!!

react-router-dom 是一个 React Router v4 包,而 React-router 是一个旧版本。感谢@HalCarleton 指出了这一点。我到处都看到了带有react-router的代码示例,而官方文档显示了react-router-dom,我真的很困惑为什么有两种不同类型的包。

关于reactjs - React 路由器 URL 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43739338/

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