【问题标题】:Child component not rendering with React Router v4子组件不使用 React Router v4 渲染
【发布时间】:2018-10-23 09:38:41
【问题描述】:

我正在尝试使用 React 嵌套路由,这就是我的应用程序的样子

Posts.js(父(复数)组件)渲染良好。

import React from "react";
import { Route } from "react-router-dom";


import Post from "./Post";
import { Link, Switch } from "react-router-dom";


const Posts = ({ match }) => {
 return (
    <div>
        <h2>Topics</h2>
        <ul>
            <li>
                <Link to={`${match.url}/rendering`}>Rendering with React</Link>
            </li>
            <li>
                <Link to={`${match.url}/components`}>Components</Link>
            </li>
            <li>
                <Link to={`${match.url}/props-v-state`}>Props v. State</Link>
            </li>
        </ul>

        <div>

            <Route path={`${match.path}/:topicId`} component={Post} />
            <Route
                exact
                path={match.path}
                render={() => <h3>Please select a topic.</h3>}
            />
        </div>

    </div>
)}

export default Posts;

Post 组件(子(单数)组件)

import React from "react";

const Post = ({ match }) => (
 <div>
    <h1>Child component</h1>
    <h3>{match.params.topicId}</h3>
 </div>
 );
export default Post;

不确定这里缺少什么配置,父组件在路由上渲染得很好,而子组件内容没有渲染

控制台没有错误。


父路由配置

import React from "react";
import { Switch, Route,NavLink } from "react-router-dom";

import Home from "./container/home/Home";
import About from "./container/about/About";
import Posts from "./container/post/posts";
import PageNotFound from "./container/Error/404";

const routes = () => (
 <Switch>
    <Route path="/" exact component={Home}></Route>
    <Route path="/about" component={About}></Route>
    <Route exact path="/post" component={Posts}></Route>
    <Route component={PageNotFound}> </Route>*/}
  </Switch>

  )


 export default routes;

App.js

import React, { Component } from 'react';
import './App.css';
import Layout from "./hoc/layout/layout";



class App extends Component {
 render() {
  return (
    <Layout></Layout>
 );
}}

export default App;

【问题讨论】:

  • 是完全不渲染还是只在点击链接时渲染
  • @ShubhamKhatri,下界直接导航也不点击超链接渲染内容
  • Posts 组件是如何渲染的。还有你试图访问的 url/路径名是什么
  • @ShubhamKhatri,post 组件在 /post 和子组件 url /post/linkText 处呈现
  • 好的,最后一个问题,你能显示渲染 Posts 组件的路由吗

标签: javascript reactjs react-router-v4 react-router-dom


【解决方案1】:

所以你的代码中的错误是非常微不足道的。在父 Route,即渲染 Posts 组件的 Route 中,您有一个 exact 关键字,因此 Routes/posts/:postId 不会匹配这个确切的 Route 与路径 /post 以及因此内部 Routes 或嵌套的子路由不起作用

您需要更改您的路线配置,例如

const routes = () => (
     <Switch>
        <Route path="/" exact component={Home}></Route>
        <Route path="/about" component={About}></Route>
        <Route path="/post" component={Posts}></Route>
        <Route component={PageNotFound}> </Route>*/}
      </Switch>
  )

  export default routes;

【讨论】:

  • 真的!!我刚检查过。发现你是对的......谢谢
  • @Kgn-web 很高兴有帮助:-)
  • 将在允许的情况下将您的 ans 标记为已接受。再次感谢,如果您认为这篇文章值得,请点赞
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 2019-01-15
  • 2018-01-10
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2018-01-07
  • 2017-03-14
相关资源
最近更新 更多