首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助的儿童路线渲染。父路由运行良好,但子路由降至404。

需要帮助的儿童路线渲染。父路由运行良好,但子路由降至404。
EN

Stack Overflow用户
提问于 2020-03-15 00:58:00
回答 1查看 382关注 0票数 1

我正在使用JSON数据开发一个静态站点。我在react静态默认示例中替换了post数据,它运行得很好。

Problem:当我在另一个JSON中添加另一个带有大量消息的路由/news时,父路由/news可以正常工作,但是子路由(如/news/1//news/2/ )都会转到404页。

在浏览器控制台中,我得到了错误GET http://localhost:3000/__react-static__/routeInfo/news/1 404 (Not Found)

我不认为这些是动态路线,因为我可以获得数据之前,反应应用程序挂载。我该怎么做才能修复那个

在我的static.config.js里

代码语言:javascript
复制
{
  path: '/news',
  getData: async () =>  ({
    messages,
  }),
  children: messages.map(message => ({
    path: `/news/${message.ID}`,
    template: 'src/containers/Message',
    getData: () => ({
      message,
    }),
  })),
}

我在/src/ Message.js容器中有一个

代码语言:javascript
复制
import React from "react";
import { useRouteData } from "react-static";

export default () => {
  const { message } = useRouteData()

  return (
       <div>
          This is a {message.Title} page!
        </div>
    )
};

工作的news.js

代码语言:javascript
复制
import React from 'react'
import { useRouteData } from 'react-static'
import { Link } from 'components/Router'

export default function Blog() {
  const { messages } = useRouteData()
  return (
    <div>
      <h1>It's news.</h1>
      <div>
        <a href="#bottom" id="top">
          Scroll to bottom!
        </a>
      </div>
      <br />
      All Posts:
      <ul>
        {messages.map(message => (
          <li key={message.ID}>
            <Link to={`/news/{message.ID}/`}>{message.Title}</Link>
          </li>
        ))}
      </ul>
      <a href="#top" id="bottom">
        Scroll to top!
      </a>
    </div>
  )
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-16 03:28:19

请试试这个:

代码语言:javascript
复制
const works = filterLanguage(JSON.parse(JSON.stringify(works)), lang)
...
{
   path: `/${lang}/works`,
   getProps: () => ({
      works,
   }),
   children: works.works.map(work => ({
       path: `/${work.slug}`,
       getProps: () => ({
           works,
           work: filterLanguage(Object.assign({}, {labels: works.labels}, work), lang),
       }),
   }))
},


const Work = getRouteProps(({ work }) => (
  <div>This is a work! {work}</div>
))

const Works = getRouteProps(({ works }) => (
  <div>
    <div>My works! {works}</div>
    <Route path="/works/:workID" component={Work} />
  </div>
))

如果您需要消息页面中的message.ID值。message对象包含ID字段。

我认为路径:/news/${message.ID}是动态路由。也许您需要包含新闻ID的url。您可以在链接标记中使用该/news/show?id=${message.ID}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60688781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档