javascript - 如何使用普通路由定义配置 react-router v3?
问题描述
我正在尝试使用 react-router v3 获得简单的路由定义,但正如您从这个 Codesandbox中看到的那样,没有任何组件正在加载。
这是代码:
import Home from "/components/Home";
import About from "/components/About";
class App extends React.Component {
render() {
return <Router history={hashHistory} children={this.props.routes} />;
}
}
let routes = {
path: "/",
childRoutes: [Home, About]
};
const root = document.getElementById("root");
ReactDOM.render(<App routes={routes} />, root);
我在这里错过了一些非常明显的东西吗?
这是我正在使用的软件包(及其版本):
"react": "^15.6.2",
"react-dom": "^15.6.2",
"react-router": "^3.0.0",
解决方案
首先,顶部的导入不正确。您应该使用relative
路径来包含组件。
第二,要定义一个 Routes 结构,你应该使用<Route />
组件。
在这里,我对您的代码进行了一些更改:
import React from "react";
import ReactDOM from "react-dom";
import { hashHistory, Router, Route } from "react-router";
// components
import Home from "./components/Home";
import About from "./components/About";
class App extends React.Component {
render() {
const { routes } = this.props;
return (
<Router history={hashHistory}>
{routes.childRoutes.map(({ Component, path }) => (
<Route key={path} component={Component} path={path} />
))}
</Router>
);
}
}
let routes = {
path: "/",
childRoutes: [
{
Component: Home,
path: "home"
},
{
Component: About,
path: "about"
}
]
};
const root = document.getElementById("root");
ReactDOM.render(<App routes={routes} />, root);
链接到沙箱https://codesandbox.io/s/6lvmry9pqk。
页面:
https ://6lvmry9pqk.codesandbox.io/#/home
https://6lvmry9pqk.codesandbox.io/#/about
推荐阅读
- spring-boot - 在类路径资源 [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class] 中定义名称为“gsonBuilder”的 bean 创建错误
- python - 如何迭代表的列并使用列表的值更新它们?
- pycharm - 在 pycharm 中运行 python 解释器时运行源脚本以加载环境
- unicode - 为什么我不能将这些十六进制转换为 utf-8?
- c++ - 即使可执行文件的输入是从文件重定向的,如何强制从终端输入?
- ruby - 如何更新控制器参数以接受带有导轨的嵌套属性?
- symfony - Symfony FOSUserBundle 持久化 sf_redirect
- android - 在 Android Oreo 中渲染动画时 CPU 使用率高出 10%~20%
- qt - 如何在 ubuntu 容器中运行示例 qt 应用程序
- caching - 当 L1 缓存从 L2 缓存中复制一个值时究竟会发生什么