props 更改后重新渲染 React 组件

ech*_*ech 10 reactjs react-redux

在 React 文档中,它说

\n
\n

默认情况下,当您的组件\xe2\x80\x99s状态或道具发生变化时,您的组件将重新渲染。

\n
\n

我理解状态变化,但我不确定道具何时变化。据我所知,道具总是从父组件传递到子组件。当父组件重新渲染时(例如,由于状态更改),所有子组件也会重新渲染(忽略 shouldComponentUpdate)。所以在我看来,如果父组件重新渲染,所有子组件都会重新渲染,无论我是否向它们传递新的道具。如果我确实将新的道具传递给子组件,则子组件重新渲染的事实只是因为父组件正在重新渲染,而不是因为我传递了新的道具。

\n

是否有这样的场景:父组件向子组件传递新的 props,导致子组件重新渲染,但又不是单纯由父组件重新渲染引起的?

\n

是否有可能看到一个示例,其中组件将重新渲染,因为它收到新的道具,而不是因为父级正在重新渲染(或其自身的状态更改)?

\n

抱歉,如果这是一个基本问题,我是 React 新手。

\n

编辑:我看到 Redux 可以通过传递新的 props 来导致组件重新渲染,我很好奇 Redux 在幕后做了什么来实现这一点。

\n

Slb*_*box 5

回答你最后提出的问题:

  • 如果孩子是 aPureComponent或包裹在其中,则只有React.memo在 props 发生变化时才会重新渲染。如果父级重新渲染,则组件将比较它收到的道具,如果它们与之前传递的道具相同,则不会重新渲染。

  • 如果子级不是aPureComponent包裹在 中React.memo,那么它会在其父级重新渲染时重新渲染。


小智 0

例如,当您将提供者、HOC 或 Redux 与 mapStateToProps 一起使用时,道具会从其他组件注入道具中更改。