React Router 4 - componentWillReceiveProps() 不触发

2023-12-20

我正在使用 React Router 4。

当我使用渲染参数 componentWillReceiveProps() 渲染组件时,它不会第一次触发,因此我需要单击两次才能将道具发送到组件。

我这样渲染:

const CartRoute = (props) => (<Cart itemsInCart = {this.state.itemsInCart} deleteItemFromCart = {this.deleteItemFromCart} {...props} />);
.....
  <Switch>
    .....
    <Route path="/cart" render={CartRoute} />
  </Switch>

没有路由器(当所有组件都在同一页面上时)它可以正常工作。

这里有详细的描述:

React router - 需要单击 LINK 两次才能将 props 传递给组件 https://stackoverflow.com/questions/43814173/react-router-need-to-click-link-twice-to-pass-props-to-component


我认为原因很简单,根据DOC https://facebook.github.io/react/docs/react-component.html#componentwillreceiveprops:

React 在期间不会使用初始 props 调用 componentWillReceiveProps 安装。仅当某些组件的 props 可能时,它才会调用此方法 更新。在已安装的组件接收新的 props 之前调用 componentWillReceiveProps() 。

componentWillReceiveProps第一次渲染组件时不会被调用,当时componentDidMount被调用,当你对 props 值进行任何更改时,只有componentWillReceiveProps会被触发。所以第一次如果你想做一些计算就这样做componentDidMount方法,像这样:

componentDidMount(){
   console.log('props values', this.props); //it will print the props values
}

componentWillReceiveProps是更新生命周期方法而不是安装方法。

安装方法:

当组件的实例被调用时,这些方法被调用 创建并插入到 DOM 中。

更新方法:

更新可能是由 props 或 state 的更改引起的。这些方法 当组件被重新渲染时被调用。

检查 Mounting 和 Updating 生命周期方法之间的区别。 https://facebook.github.io/react/docs/react-component.html#the-component-lifecycle

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

React Router 4 - componentWillReceiveProps() 不触发 的相关文章

  • 在 React 中存储数据

    我实际上是 React 新手 无法选择在这种情况下存储数据的最佳方式是什么 我有一个包含一些输入的表单 我需要在提交时对这些输入中的所有数据执行一些操作 所有输入都存储在一个组件中 所以 我只需要在提交时获取所有数据 现在我正在尝试选择存储
  • angular2 使用 router.subscribe 来观察 url 变化

    我在用着router event subscribe angular router观察 url 变化以执行if虽然声明event subscribe工作正常 但我的问题是我怎样才能避免重复我的if声明只是为了在这些网址上显示标题 这可能是别
  • TypeScript 与 React Lazy 出现 Promise 错误

    我正在使用带有打字稿的反应 我使用了更高阶的组件来检查用户是否经过身份验证 添加临时后 我在路线中收到错误 如下所示 home nidhin Documents Nidhinbackup F iot remsys demotwo remsy
  • 如何在 TypeScript 中输入这个“as”JSX 属性?

    我正在描述一个 React 库 它通过名为的属性获取组件或 HTML 标签名称as 当给出as属性 它根据该组件 标签名称创建一个元素 并传递任何其他给定的属性 这里有些例子
  • 无法解构“undefined”或“null”的属性“user”

    使用 redux 检索用户信息时出错 我想从数据库获取用户信息 姓名 密码和头像地址 然后对其进行编辑 我正在使用nodejs express react redux 和jwt Actions user js import axios fr
  • 带指针的重新图表工具提示(react,tooltip) - 代码部分

    这个问题是此处发布的问题的代码 用指针重新绘制工具提示 react tooltip https stackoverflow com questions 43257143 recharts tooltip with pointer react
  • “npx create-react-app appname”不起作用

    当我跑步时npx create react app appname我收到以下错误消息 You are running create react app 4 0 0 which is behind the latest release 4 0
  • 从 React.js 中的 json 文件获取数据

    我有一个 json 文件调用 data json 例如 我使用 React js id 1 title Child Bride id 2 title Last Time I Committed Suicide The id 3 title
  • 反应超出最大调用堆栈大小

    如果用户未登录 我尝试将用户重定向到 TrapPage 这是我的代码 function requireAuth nextState replace if auth loggedIn replace pathname trap export
  • 在 React 应用程序中使用 API 密钥

    我有一个使用两个第三方服务的 React 应用程序 该应用程序已开始使用react create app 这两项服务都需要 API 密钥 通过脚本标签提供一个密钥 如下所示 另一个 API 密钥在请求中使用 我将实际密钥存储在常量中并使用它
  • @angular/router 3.0.0-alpha.3:如何迁移OnActivate

    我刚刚将 angular router 升级到 3 0 0 alpha 3 但是 我找不到 2 0 0 rc 1 中提供的 OnActivate 接口 任何提示表示赞赏 因为我们还没有任何文档 并将在接下来的几周内提供 你想要一个提示 这是
  • 无效的挂钩调用。钩子只能在函数组件体内调用

    我想使用 React 在表中显示一些记录 但出现此错误 无效的挂钩调用 钩子只能在 a 的主体内部调用 功能组件 以下情况之一可能会发生这种情况 原因 您的 React 和渲染器版本可能不匹配 例如 React DOM 你可能违反了 Hoo
  • onClick 处理程序在每个渲染周期触发

    我有这样的默认状态 this state selectedTab tab1 then 我的渲染方法是这样的 render const selectedTab this state return li tab1 li li tab2 li d
  • 从 Context Provider 重定向 React Router

    我是 React Router 的新手 并尝试使用新的 Conext API 从提供程序内部进行重定向 基本上我的提供者看起来像这样 AuthContext js class AuthProvider extends React Compo
  • 是的,验证 2 个以上相关输入

    我正在使用 yup 和 formik 来管理我的表单 我使用 yup 进行表单验证 我面临的问题是 假设我有三个字段fieldA fieldB and fieldC 验证是 fieldA fieldB必须等于fieldC 这是我所做的使用
  • 如何通过 redux-persist 阻止 redux-form“form” 状态自动重新水合

    我正在使用 redux form 它提供了一个内置的减速器 称为 formReducer 需要向组合减速器注册 以使用 redux 的存储管理表单状态 我还使用 redux persist 来保存 redux 存储 当我不想让我的表单自动重
  • Jest/Enzyme SVG Sprites 意外令牌 <

    我在使用 SVG 精灵在组件上使用 Jest 和 Enzyme 创建快照测试时遇到问题 我正在使用 svg sprite loader 包 https github com kisenka svg sprite loader https g
  • 反应独特的“关键”错误

    我正在浏览 React 中的待办事项列表教程 并遇到以下错误 我花了相当长的时间 只是找不到错误 这是错误和组件的代码 这就是代码对于课程存储库 此提交中出现问题 https github com andrewjmead react cou
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • 如何让 webpack 转换 React 生产文件?

    当我使用 webpack 与 React 16 捆绑我的应用程序时 我在浏览器中收到 Uncaught ReferenceError require is not Defined 对于react和react dom 导致错误的资源是reac

随机推荐

  • 如何将文件从 dropzone 上传到 cloudinary

    var myDropzone new Dropzone product image drpzone Prevents Dropzone from uploading dropped files immediately autoProcess
  • 从 DynamoDB 表生成云形成模板

    我有一个 DynamoDB 表需要复制到不同的环境 管理表的最佳方法是使用 CloudFormation 模板 以便脚本可以基于该模板创建表 鉴于该表已经存在 我想知道是否可以为现有表生成电子模板 有什么想法吗 google 没找到太多 模
  • MSI 日志调试日志接收器

    我有一个 InstallShield MSI 项目 当我将 MSIHANDLE 从 InstallScript 自定义操作传递到通过 DotNetCoCreateObject 初始化的托管程序集时 我的托管代码中收到的值为 2 有谁知道是否
  • 在嵌套字典上使用 ast.literal_eval

    我使用 ast literal eval 将从 json loads 收到的数据更改为 Python 字典 然而 如果我应该以一种完全不同的方式来解决这个问题 也请随意指出这一点 Authentication buf StringIO St
  • 可扩展或在线核外多标签分类器

    在过去的两三周里 我一直在为这个问题绞尽脑汁 我有一个多标签 不是多类 问题 其中每个样本可以属于多个标签 我有大约 450 万个文本文档作为训练数据 大约 100 万个文本文档作为测试数据 标签约为 35K 我在用scikit学习 对于特
  • 在付费 Android 应用程序中使用 LGPL 库的合法性 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我可以在付费 Android 应用程序中使用 LGPL 库吗 我不会修改 LGPL 库 我只是想使用它 合法吗 在 Android 免费或
  • 有没有关于 Node.js 的在线练习 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是 Node js 的新手 我需要一些练习 所以是否有任何与http www codecademy com http www codec
  • 尝试将组合布局 CollectionView 与 PageControl 连接起来。 visibleItemsInvalidationHandler 未调用

    我想在 iOS 应用程序 iOS 13 swift 5 2 xcode 11 5 的欢迎屏幕上实现分页 为此 我使用 UICollectionView 和 UIPageControl 现在我需要将 pageControl 绑定到 Colle
  • phpunit 模拟综合文档

    有关于什么是模拟以及如何使用它们的描述 http www phpunit de manual current en test doubles html http www phpunit de manual current en test d
  • Firebase HTTPs 可调用 iOS Swift

    我已经使用 Firebase 创建了一个可行的云功能 可以在我的浏览器中使用它 现在 我正在使用我的 iOS Swift 代码 并已成功安装所有依赖项 但是 我是 iOS Swift 新手 并尝试找出从云函数调用 URL 的位置 以下是 F
  • 有没有办法在 Vimscript 中使用两个自定义的完整函数?

    有没有办法在 Vim 中实现以下目标 command nargs complete customlist CustomFunc1 complete customlist CustomFunc2 Foo call MyFunction
  • 从oracle中的存储过程分配输出参数

    请帮我解决以下场景 我需要在另一个存储过程中调用一个存储过程 内部 SP 将返回一个数值 我需要将其存储在局部变量中 粗略的代码 AssignSpResult NUMBER AssignSpResult SPtobeused Param1
  • 如何防止 WP7 白色主题上的 ApplicationBar 闪烁?

    我有一个 Windows Phone 7 1 Mango 应用程序 我基本上成功地覆盖了内置主题颜色 但是 如果用户选择了白色主题并且页面具有深色背景和深色应用程序栏 则应用程序栏将使用白色背景进行渲染和动画 这会导致烦人的闪烁 完成动画后
  • 如何获取给定月份中每周的日期间隔?

    有没有办法在给定一个月的 PHP 中获取每周的开始 结束日期 例如 如果我本月 2011 年 11 月 我需要返回 30 Oct gt 5 Nov 6 Nov gt 12 Nov 13 Nov gt 19 Nov 20 Nov gt 26
  • 带有子报表的行后 SSRS 分页符(在矩形中)

    我花了几个小时寻找 简单 的解决方案 我有一个报告 SSRS 2008 R2 其中包含按 saleslineid 分组的行的 tablix 对于每个销售线 我想显示一个包含规格的子报告 然后显示销售线的组件 但我希望组件列表在新页面上开始
  • 具有 ServiceStack 路由回退和 Api 前缀的 Vue.js 路由器历史记录模式

    每个客户端路由都以哈希开头 如何在 Vue Router 中启用历史记录模式而不干扰 api 路由 另外 我不想以 api 开始我的路线 客户端路由不适用于 Config HandlerFactoryPath 设置为 api 的情况 有办法
  • 在 value="" 属性中打印 JS 变量

    我正在尝试实现一个具有动态值的 Paypal 按钮 例如 当我输入 value 300 00 时 该按钮工作正常 但是 如果我按照我的方式操作 该按钮将无法正常工作 变量价格是 JS 变量 它保存我需要放入 Paypal 按钮的信息 这是有
  • 如何获取拖放到控制台应用程序窗口上的项目的文件路径?

    我希望能够让用户将文件拖放到我的控制台应用程序的窗口上 这样他们就不会被迫将文件拖放到应用程序的图标 或链接 或者更糟糕的是在控制台中编写命令行 如何获取拖放到应用程序窗口中的文件的路径列表 你可以只听键盘的声音 将文件拖到控制台窗口时 窗
  • 使用 VBA 将 Round 函数插入当前单元格

    我试图让将 Round 函数插入到许多已经有公式的单元格中变得更容易 例如 如果单元格 A1 具有公式 b1 b2 使用这个宏后 我想要读取单元格内容 Round b1 b2 每个单元格中的公式都不相同 因此b1 b2部分必须是任何东西 我
  • React Router 4 - componentWillReceiveProps() 不触发

    我正在使用 React Router 4 当我使用渲染参数 componentWillReceiveProps 渲染组件时 它不会第一次触发 因此我需要单击两次才能将道具发送到组件 我这样渲染 const CartRoute props g