首页 > 解决方案 > 与传递属性相比,useContext/useSelector 会影响性能吗?

问题描述

在此处输入图像描述

我有一个包含多个嵌套子组件的组件;这些孩子需要有关父组件的信息,以及来自我的 redux 存储的数据。考虑到它们的数量,在父组件中使用一次 useSelector 挂钩并通过属性(而不是上下文)将其向下传递,是否比让每个子组件使用 useSelector 更好?此外,通过属性传递有关父组件的信息是否比让每个子组件都使用 useContext 更好?

编辑:在测试中,通过属性时有20%的速度提升;我的猜测是 useSelector/useContext 在其声明中比属性更昂贵?谁能证实这是真的?

标签: reactjsredux

解决方案


在父组件中使用一次 useSelector 挂钩并通过属性(而不是上下文)将其向下传递,是否比让每个子组件使用 useSelector 更好?

第二个是更好的选择。与第一选择相比,您将减少不必要的重新渲染。

在您的首选场景中,当父级中的某些内容发生更改时,它将触发组件的重新渲染(意味着子级将受到影响)。

通过父组件的属性传递有关父组件的信息是否比让每个子组件都使用 useContext 更好?

答案与上述相同。


推荐阅读