React router dom将数据从父组件传递到子路由器组件不传递props.match

2024-03-28

父组件App.js的内容:-

import React, { useEffect, useState } from "react";
import NavBar from "./components/NavBar";
import Signup from "./pages/Signup";
import Home from "./pages/Home";
import Book from "./pages/Book";

function App() {
  const [user, setUser] = useState();
  useEffect(() => {
    const token = "Bearer " + sessionStorage.getItem("token");
    if (token) {
      axios
        .get(process.env.REACT_APP_API_URL + "user/self", {
          headers: {
            Authorization: token,
            "Content-Type": "application/json",
          },
        })
        .then((res) => setUser(res.data));
    }
  }, []);

  return (
    <div className="container-fluid">
      <NavBar user={user} />
      <Route exact path="/" component={Home} />
      <Route path="/signup" component={Signup} />
      <Route exact path="/book/:id" component={() => <Book user={user} />} />
    </div>
  );
}

export default App;

对于路线:-

<Route exact path="/book/:id" component={() => <Book user={user} />} />

当我将组件值从组件 = {Book} 设置为组件 = {() => 我收到错误:-

类型错误:无法读取未定义的属性“params”

那是因为我在 Book 组件中使用“props.match.params.id”。

如何将用户状态与 props.match 传递给 Book 组件?


这就是使用 component 属性的方式

<Route exact path="/book/:id" component={Book} />

考虑使用render道具而不是component像这样的道具:

<Route exact path="/book/:id" render={(routeProps) => <Book user={user} {...routeProps} />} />

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React router dom将数据从父组件传递到子路由器组件不传递props.match 的相关文章

随机推荐

  • Google App Engine appcfg.py 显示每个命令的帮助消息

    我有 GWT 应用程序 部署在 GAE Java 上 我正在尝试使用 appcfg py 从 App Engine 数据存储区下载数据 我按照以下进行了所有设置http ikaisays com 2010 06 10 using the b
  • 使用后台服务开发活动的最佳实践

    我的应用程序有一个用于 UI 的活动和一个用于后台轮询乐趣的服务 好像是标准票价 AlarmManager 可以在不调用 Activity OnCreate 的情况下触发 Service Intent 吗 将活动和服务放入不同的应用程序有什
  • 如何为 Angular Material 扩展面板中的图标设置动画?

    我正在尝试为扩展面板标题内的图标设置动画 我的HTML
  • 获取三个数组的所有可能组合,不重复

    我有三个动态填充的数组 可能只有一两个数组有数据 array1 array 0 gt 100GB 1 gt 500GB array2 array 0 gt black 1 gt yellow 2 gt green array1 array
  • 将前导零添加到 varchar 字段[重复]

    这个问题在这里已经有答案了 我有一个领域是varchar 8 保存我转换而来的日期值float to varchar 有些记录有八个字符 有些记录有七个字符 我想通过在有 7 的部分添加前导零来使它们的长度相同 8 个字符示例 121620
  • 拒绝时重定向 |访问

    如果用户的 IP 与 IP 地址的拒绝相匹配 例如
  • 异步nodejs查询和处理结果

    我有一个从 mongodb 获取的对象数组 数组中的每个元素都是一篇文章 作者为 user id 现在我希望找到与 user id 相关的用户信息 由于节点使用异步方法从数据库查找数据 因此 forEach 循环在回调完成之前完成 docs
  • 使用邮件规则和 Applescript 将 vcard 添加到联系人

    我通过特定的电子邮件地址收到了很多客户电子名片 我想通过邮件规则和 AppleScript 自动将电子名片添加到我的联系人中 我搜索了很多并找到了一些东西 我稍微修改了一下 并且打开和添加过程运行良好 但只有当我选择一个文件时 我无法将文件
  • 防止 DOMDocument::loadHTML() 转换实体

    我有一个字符串值 我正在尝试为其提取列表项 我想提取文本和任何子节点 但是 DOMDocument 正在将实体转换为字符 而不是保留原始状态 我尝试将 DOMDocument resolveExternals 和 DOMDocument s
  • opencv中的骨架化

    opencv中有没有可以使用的特定函数来进行骨架化 另外 我搜索了一段时间 想知道opencv是否实现了voronoi 骨骼 似乎有 但真的是 看起来 Voronoi Skeleton 是在 cvConstructSkeleton and
  • HTML5网络存储:不同网站可以互相覆盖用户计算机上的数据吗?

    我有一些关于 HTML5 存储概念的问题 我浏览了 w3c 规范 书籍和教程 但我仍然对某些概念有点不清楚 假设我访问网站 A 一些 JavaScript 在我的浏览器中运行 用于设置键值对 例如 username deepak 然后我访问
  • 从选择标签中的数据库获取值 HTML PHP MySQL [重复]

    这个问题在这里已经有答案了 我是 PHP MySQL 的初学者 我成功地从数据库中获取了值INPUT类型 但我无法从数据库中获取数据SELECT type 这是我的示例编辑表单 其中Gender 用户类型无法从我的数据库输出值 and he
  • 如何将雪花中单词的第一个字母大写?

    我需要在 Snowflake 中将 mySQL 查询中某些单词的首字母大写 我目前正在使用这个功能 SELECT case when FLAG1 is null then upper FLAG2 else FLAG1 END as STAT
  • 为什么新的 gradle 测试过滤功能不适用于我的构建脚本?

    我正在开发一个具有以下结构的 项目 proj dbfit junit module db1 db2 提供一些背景信息 所有这些 模块 db1 db2 都有 JUnit 测试 这些测试使用 FitNesseRunner 将它们集成到 Bamb
  • 某些图像无法在 IE7 或 IE8 中显示

    我不明白为什么这个图像 以及其他类似的图像 不会在 IE7 或 IE8 中显示 它在 IE9 Chrome Safari Firefox Mac 或 PC 以及这些浏览器的多个版本中完美显示 http images appletree co
  • Google Cloud CDN 开始忽略存储桶的查询字符串

    几个月前 为存储桶激活了 Cloud CDN 我们的存储数据会通过后端定期更改 因此 为了使缓存版本无效 我们添加了一个查询参数changedDate到提供给客户端的 url 当时这很有效 在过去几个月 可能是几周 的某个时候 谷歌似乎改变
  • 如何在 Python 中使用日期时间和 scipy 峰值绘制绘图?

    我从一个问题中举了一个例子 并将其适应我的数据集 但当涉及到绘制绘图时 我陷入了困境 我知道如何制作日期时间 值图 但我不知道如何进行组合 我得到的答复如下 Response https datascience stackexchange
  • 部署套件建议[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 Net 4 0 下编写了一些应
  • iOS 8 代码适用于 iPhone 5s,但不适用于 iPhone 5

    在 iPhone 5s 模拟器上一直测试我的 spritekit 游戏后 我终于尝试在 iPhone 5 模拟器上运行它 不幸的是 当我第一次触摸时 我就收到了一个我不明白的错误 我的touchesBegan函数调用我的addCoin函数
  • React router dom将数据从父组件传递到子路由器组件不传递props.match

    父组件App js的内容 import React useEffect useState from react import NavBar from components NavBar import Signup from pages Si