当前位置: 首页 > 知识库问答 >
问题:

带有可选路径参数的简单反应路由器给出了“类型错误:无法读取属性”未定义的“过滤器”

堵昊焱
2023-03-14

我有这个足够简单的React应用程序(创建与create-react-app1.5.2,并删除绒毛)。默认情况下,它安装了react-router4.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)呈现空白页面。(/:过滤器)也是如此。

我读过许多类似的问题,但没有一个与我的问题相匹配。所以我的问题是:如何在组件中声明可选路径参数,然后从应用程序组件中读取参数?

共有1个答案

松正阳
2023-03-14

我认为在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