我有这个足够简单的React应用程序(创建与create-react-app
1.5.2,并删除绒毛)。默认情况下,它安装了react-router
4.2.0。
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route } from 'react-router';
import history from 'history/createBrowserHistory';
const App = ({
params
}) => (
<div>
We are here: {params.filter}
</div>
);
const Root = () => (
<Router history={history()}>
<Route path="/:filter?" component={App} />
</Router>
);
ReactDOM.render(<Root />, document.getElementById('root'));
我使用下面答案中描述的语法来创建可选的路径参数:https://stackoverflow.com/a/40872420/1461424
但是,这会产生错误:TypeError:无法读取未定义的
的属性过滤器:
<p>We are here: {params.filter}</p>
使用旧式/(:filter)
呈现空白页面。(/:过滤器)
也是如此。
我读过许多类似的问题,但没有一个与我的问题相匹配。所以我的问题是:如何在根
组件中声明可选路径参数,然后从应用程序
组件中读取参数?
我认为在React路由器v4中,您应该使用不同的道具,匹配
:
const App = ({
match
}) => (
然后将包含以下参数:
<p>We are here: {match.params.filter}</p>
我所遵循的教程使用的是React-Router 2.0.0,但在我的桌面上,我使用的是4.1.1。我试图搜索更改,但没有找到有效的解决方案。
问题内容: 我设置了渲染组件的路线: 然后在该组件(PageStart)中,我有: 但这会引发错误: 简单调用时传递道具似乎可以正常工作,但在render函数中不行。为什么? 问题答案: 因为您没有将路由器传递的默认道具传递到组件中,例如比赛,历史记录等。 当您编写此代码时: 这意味着组件中没有任何价值。 这样写: 现在将所有值传递给组件。
我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise
问题内容: 我正在尝试在使用包中设置路由,并且遇到以下问题 : 链接到图像:https : //postimg.org/image/v0twphnc7/ 我在中使用的代码 我设法确定的问题是,当我将投资组合定义为简单组件时,它可以工作。 但是,当我从Component扩展它时,就会出现错误: 您能解释一下“正常”组件和类组件之间的可能区别以及为什么出现以下错误。 问题答案: 假设您正在导入的正确,
问题内容: 我在使用React Router时遇到了一些麻烦(我使用的是version ^ 4.0.0)。 这是我的index.js App.js就是任何东西。我在这里发布基本的,因为这不是问题(我相信) 这就是我检查控制台日志时发生的情况 哦,这是package.json,以防万一 我已经在其他地方检查过,但是我没有找到解决方法。 非常感谢你们的耐心和帮助!! 问题答案: 您做错了几件事。 首先
我试图创建一个符合以下所有URL的路由: 这是我目前的路线: 根据关于https://github.com/rackt/react-router/blob/master/docs/guides/basics/RouteMatching.md 此路由应该完全匹配,但与上面的URL都不匹配。 我需要做什么来支持这个可选参数? 我在React路由器版本0.13.3,如果我删除,那么我可以匹配第一个URL