在reactjs中,道具是通过值传递还是通过引用传递?

Duk*_*gal 19 reactjs

据我所知,如果我将父组件状态传递给子组件,那么该子组件将获得父组件的实时状态.

因此,在父母的状态中所做的改变也可以通过它出现的道具在孩子身上立即获得.

它是否正确?

Elo*_*pos 14

正如您所期望的那样,它与语言中的任何其他地方基本相同.基元按值传递,非基元的变量将通过引用传递.

React在内部更新道具,以便孩子们始终拥有道具的最新价值.

这是在接收props的新值时调用的生命周期方法.

但是,请确保您尊重所使用的基础架构以及React为您提供的公开API.


Csa*_*ati 6

简短回答: props 通过引用传递。

它可能会令人困惑的原因:如果您手动更改父组件的状态(不好的做法!),该对象也会在子组件中更改。但不会触发重新渲染!(子组件不会“知道”它的 props 已经改变。)所以你不会看到 UI 改变。

但是,如果您使用setState(首选做法)更改父级的状态,则会通知子级,它必须重新渲染自身。


Shu*_*ain 0

当组件的状态发生更改时,React 会重新渲染该组件。在执行此操作的同时,其子组件也会重新渲染,这也会导致它们发生变化。