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

子组件不更改道具

狄玮
2023-03-14

我有以下结构:

class Parent extends React.Component {

  componentDidMount() {
    document.addEventListener('keydown', () => {
      this.value++;
    })
  }

  this.value = 0;

  render() {
    return (<ChildComponent value={this.value} />) 

ChildComponent只是呈现值:

class ChildComponent extends Component {
  render() {
    return (
        <div>
            {this.props.value}
        </div>
    );
  }}

共有1个答案

糜运良
2023-03-14

您应该将该值添加到父状态。这就是React的工作方式。即使您可以手动触发子组件上的重新程序,它仍然是0,因为仍然0提供了道具。当React检测到父组件上的状态发生了变化时,它将计算所有子元素的虚拟dom,对虚拟dom和实际dom进行比较,然后有选择地用这些值更新实际dom(实际上只有子组件div的内部文本是新的)。React经过了令人难以置信的优化,可以使用虚拟dom处理重新渲染,您不应该担心这种情况下的性能损失。

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

  • 所以我对vue的父子组件通信有问题。问题是,当我导航到一个组件后,它应该调用ajax从服务器获取数据。收到数据后,父组件应该通过道具将其发送给所有子组件,但道具数据不显示。子组件只有在我更改编辑器上的代码后才开始显示props数据。这是我父组件的代码 这是我的单一产品规格组件,不会加载道具数据: 正如我所说,我的单一产品规范组件的唯一问题不是它不会加载道具数据。问题是,当我在文本编辑器中更改代码时

  • 为什么在下面的伪代码示例中,当容器更改foo.bar时,Child没有重新呈现? 即使我在修改容器中的值后调用,Child仍然显示旧值。

  • 我是新来的,对一些事情有点困惑。我在网上读了许多文章,声称组件不能改变自己的道具,但是父组件可以改变其子组件的道具。然而,我没有看到任何真正展示如何做到这一点的东西。 我希望能够做到这一点: 然而,我根本不知道如何做到这一点——尽管我在React上读到的几乎所有材料都说父母可以改变孩子的道具。我能正常工作的如下: 当我只想重新渲染子视图时,父视图需要重新渲染,这对我来说似乎有点过分了。如何更改<代

  • 我对JS的反应有点陌生。我有两个问题。我来了 现在我要做的是,当应用程序组件挂载时,我生成一个对后端服务器的ajax调用,当它返回时,它更新道具,并设置状态,这样子组件也会重新呈现,但子组件不会重新呈现。谁能告诉我出了什么问题。 问题2 现在让我们假设我将进入组件二路由,它将呈现组件二,我在应用程序组件中生成一个ajax调用,根据ajax调用返回的数据,我在应用程序组件中设置了一些道具,我还希望组

  • 我正在尝试制作一个很好的ApiWrapper组件来填充各种子组件中的数据。从我读到的所有内容来看,这应该是可行的:https://jsfidle.net/vinniejames/m1mesp6z/1/ 但由于某种原因,当父状态更改时,子组件似乎没有更新。 我是不是漏了什么?