【问题标题】:mapStateToProps get url param?mapStateToProps 获取 url 参数?
【发布时间】:2020-09-19 15:11:56
【问题描述】:

我正在使用带有 redux 的 create-app-react 和带有 5.2.0 版本的 react-router-dom。

在 App.js 中

function App() {
  return (
    <BrowserRouter>
      <div className="container">
        <Header />
        <Switch>
          <Route exact path="/" component={HomePage} />
          <Route path="/about" component={AboutPage} />
          <Route path="/courses" component={CoursesPage} />
          <Route path="/course" component={ManageCoursePage} />
          <Route path="/course/:slug" component={ManageCoursePage} />
          <Route component={PageNotFound} />
        </Switch>
      </div>
    </BrowserRouter>
  )
}

在 coursePage.js 中

.......
.......
function mapStateToProps(state, ownProps) {
  const slug = ownProps.match.params.slug
........
}
.......
export default connect(mapStateToProps, mapDispatchToProps)(ManageCoursePage)

.......

URL 中的课程信息

const slug = ownProps.match.params.slug;

但是,我发现“params”是一个空对象。为了解决这个问题,我做了以下工作

const slug = ownProps.location.pathname.split('/').reverse()[0];

我不明白“ownProps.location”时“ownProps.match”如何没有url信息

我所做的断点的屏幕截图如下:

您能帮忙解决这个问题吗?

提前致谢

【问题讨论】:

    标签: reactjs redux react-redux react-router react-router-dom


    【解决方案1】:

    您的路线&lt;Route path="/courses" component={CoursesPage} /&gt; 没有任何参数。例如,您可以将其重写为&lt;Route path="/courses/:courseId" component={CoursesPage} /&gt;。在您可以在 CoursesPage 组件中访问 ownProps.match.params.courseId 之后。

    【讨论】:

    • 我已经使用参数 id &lt;Route path="/course/:slug" component={ManageCoursePage} /&gt; 路由但仍然是同样的问题!
    • 你有两条路线适合截图:path="/course"path="/course/:slug"。 React 路由器优先。所以你需要删除&lt;Route path="/course" component={ManageCoursePage} /&gt;
    • 我删除了&lt;Route path="/course" component={ManageCoursePage} /&gt;,一切正常,但我需要path="course"path="/course/:slug",因为它是不同的页面路径
    • 好的,然后将path="/course"移到path="/course/:slug"下方。并将exact 添加到&lt;Route path="/course/:slug" exact component={ManageCoursePage} /&gt;
    猜你喜欢
    • 2020-09-23
    • 1970-01-01
    • 2015-02-08
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多