当前位置: 首页 > 知识库问答 >
问题:

我可以在React中更新组件的道具吗。js?

赵涵亮
2023-03-14

开始与React合作后。在js中,props似乎是静态的(从父组件传入),而state则根据事件进行更改。但是,我注意到文档中提到了组件WillReceiveProps,其中特别包括以下示例

componentWillReceiveProps: function(nextProps) {
  this.setState({
    likesIncreasing: nextProps.likeCount > this.props.likeCount
  });
}

这似乎意味着,根据nextPropsThis的比较,组件的属性可能会发生变化。道具。我错过了什么?道具是如何变化的,还是我弄错了它的名称?

共有3个答案

潘飞英
2023-03-14

当组件的父级使用不同的属性再次渲染组件时,道具可能会更改。我认为这主要是一种优化,因此不需要实例化新组件。

伍溪叠
2023-03-14

道具

React组件应该使用道具来存储可以更改的信息,但只能由不同的组件更改。

状态

React组件应该使用状态来存储组件本身可以更改的信息。

Valéry已经提供了一个很好的例子。

傅玮
2023-03-14

组件不能更新自己的道具,除非它们是数组或对象(让组件更新自己的道具,即使可能也是反模式的),但可以更新其状态及其子组件的道具。

例如,仪表板在其状态中有一个速度字段,并将其传递给显示此速度的仪表子级。它的渲染方法只是返回

在此之前,将调用仪表的组件willreceiveprops,以便仪表有机会比较新值和旧值。

 类似资料:
  • 问题内容: 在开始使用React.js之后,似乎是静态的(从父组件传入),而基于事件的更改则似乎是静态的。但是,我在文档中注意到对的引用,其中具体包括以下示例: 这似乎意味着,性能可以改变根据的比较组件来。我想念什么?道具如何更改,或者我误认为道具的调用位置? 问题答案: 除非组件是数组或对象,否则组件不能更新其自身的props(即使可能,组件也要更新其自己的props是反模式),但是可以更新其状

  • 我正在做一个React-Native项目,我意识到React-Native似乎打破了React-flow(父到子)道具更新。 基本上,我是从“应用程序”组件调用“菜单”组件,将一个道具传递给“菜单”。然而,当我更新“应用程序”状态时,“菜单”上的道具应该更新,但这不会发生。我做错什么了吗? 这是我的密码: 一个pp.js 菜单js

  • 对于Eample: 我在谷歌上搜索了这个问题,我发现我找到的答案已经过时了 关于StackOVerflow的几个问题 reactJS:为什么将组件初始状态传递为prop是反模式? reactJS:如何在呈现组件时传递初始状态? 但是我在React博客中发现了这个帖子:React v0.13.0 Beta 1 在这篇文章中,author做了我想做的事情,据我所知,现在是不推荐的。 所以问题是:通过道

  • 问题内容: 什么是对React组件prop更新进行单元测试的正确方法。 这是我的测试装置; 这可以正常工作,并且测试通过了,但是显示了反应警告消息 我要测试的只是属性的更新,而不是使用其他属性创建元素的新实例。有没有更好的方法来执行此属性更新? 问题答案: AirBnB的酶库为这个问题提供了一个优雅的解决方案。 它提供了一个setProps方法,可以在浅包装或jsdom包装上调用该方法。

  • 我有一个React应用程序,其中来自父组件的道具被传递到子组件,然后道具设置子组件的状态。 如何让它更新子组件上的状态? 我的精简代码:

  • 问题内容: 我正在尝试将表示性组件与容器组件分开。我有一个和一个。容器负责触发redux操作,以根据当前用户获取适当的网站。 问题是在最初呈现容器组件之后,异步获取了当前用户。这意味着容器组件不知道它需要重新执行其函数中的代码,该代码将更新数据以发送到。我认为我需要在其props(user)之一更改时重新渲染容器组件。如何正确执行此操作? 问题答案: 您必须在方法中添加条件。 该示例用于比较对象。