我试过这种模式。
ParentComponent
...
render(
return <ChildComponent newProps="newPropsValue />)
ChildComponent
...
ComponentWillReceiveProps{
this.setState({"propsKey": "newPropsValue"})
}
据我所知,最初的组件呈现是由props更改触发的,而由于setState是异步的(出于某种原因),带有新状态更新的呈现不是在第一次传递时完成的。
然而,我不明白的是,为什么当它最终决定更新状态时,它没有重新发布组件。我以为由setState引起的状态变化总是会触发一个rerender。
所以最后,我有一个组件,它在状态实际改变之前无用地重新呈现,然后什么都不做,当/如果(?)状态更新。我一点也不理解这种行为。
SetState
将触发ComponentUdpate
->ComponentWillUpdate
->Render
。props
更改将在此链之前触发ComponentWillReceiveProps
。您可以在这里看一下关于React生命周期的图像。您可以看到react
在props
和state
上的不同行为。
所以:
然而,我不明白的是,为什么当它最终决定更新状态时,它没有重新呈现组件。
通过setstate
更新state
将触发render
函数(重新呈现)。而且道具
也会触发呈现
。
遵循您的代码:
ComponentWillReceiveProps
:
this.props.newprops=“newpropsvalue”
this.state.propskey=“newpropsvalue”
现在,让我们在parentcomponent
中更新childcomponent
的props
,假设newprops=“latestpropsvalue”
:
ComponentWillReceiveProps
之前的
this.props.newprops=“latestpropsvalue”
this.state.propskey=“AnotherValue”
this.props.newprops=“latestpropsvalue”
this.state.propskey=“latestpropsvalue”
当给出新的道具值时,如何强制子组件重写?
如果您的render
正在使用state
,则在render
内部使用setstate
。如果您在render
中使用props
,它也会相应地更新
我试图将表示组件与容器组件分开。我有一个和一个。容器负责触发redux操作,以基于当前用户获取适当的站点。 问题在于,在容器组件最初呈现之后,当前用户是异步获取的。这意味着容器组件不知道需要在其函数中重新执行代码,该函数将更新数据以发送到。我想当容器组件的一个道具(用户)发生变化时,我需要重新渲染它。如何正确地执行此操作?
我有一个使用自定义元素的表单。在组件中,我管理输入的状态(有效/无效)。在表单中,我要求用户重新输入密码,我希望如果用户输入两个正确的密码,然后修改第一个,第二个无效(得到一个红色的背景色)。 我还试图通过添加以下属性更显式地传递值:,但也不起作用。 那么,这种方法有什么问题,什么是强制重新评估第二个密码组件的好方法呢?
我正在呈现一个自定义模态组件,该组件基于从父组件传入的道具来显示。道具最初为,然后通过按钮在父组件中更新。我正在通过render函数中的语句检查组件状态。当组件首次初始化时,它会像预期的那样记录,但当isVisible更新时,它会返回。为什么状态不随道具更新? 我知道这可能是非常基本的组件生命周期的东西,但我无法从文档中找到它,而且我是一个相当新的反应者。
问题内容: 一个人如何将没有价值的道具传递给反应成分? 注意-没有为这些道具指定默认道具值。 我似乎找不到关于它的任何引用,但是通过观察这些属性的值(它们在默认情况下会分配给它们)。 问题答案: 编译器将您传递的内容解释为布尔值属性。编写纯HTML时也是如此。没有值的属性被解释为布尔值。由于JSX是用于编写HTML的语法糖,因此具有相同的行为是有道理的。 官方的React文档包含以下内容: 布尔属
我是新手,基本上我正在尝试立即更新父组件的状态及其子组件(和)道具。当前仅更新父组件的状态。我会一步一步地解释清楚。 这里我有一个父组件 这个组件有两个对象数组(和),分别作为道具发送到和组件。接收selectedPlayer和setSseltedPlayer。两个组件都有一个组件和一个选择输入。在组件中,用户将选择一个团队,他们将显示所选团队的球员,而在组件中,将选择一个球员,他们将显示选中的玩
我试图传递一个道具给一个子组件在反应,但它不显示在所有的道具,当我控制台日志。甚至关键的也不显示。对此的任何帮助都将不胜感激。