【问题标题】:Fetching from store vs. letting the parent fetch and deliver via props从商店获取与让父通过道具获取和交付
【发布时间】:2020-01-19 15:04:53
【问题描述】:

在开发组件时,我发现自己想知道组件是否应该直接从存储中获取它的数据,或者让它通过 props 传递 - 大概是让父级(或任何更高的祖先)来获取它。此外,我倾向于不区分智能/哑组件。 你怎么看待这件事?有什么取舍?

在我看来,直接获取与通过道具传递的权衡是:

  • 使组件更难测试,因为您不必在每次测试时都为它模拟商店。
  • 意味着更小、更简洁的代码
  • 使组件的可移植性降低,也就是说您不能简单地更改从商店获取的内容
  • 性能较差,如果您渲染几个相同类型的实例(例如,如果您要制作一百个元素的长列表,则让父级使用一个 useSelector 获取所有内容然后通过 props 传递数据会更高效,而不是让每个列表项自己获取数据)

【问题讨论】:

  • 我只会让父组件从存储中获取数据,如果它正在做某事的话。换句话说,父母应该有充分的理由拥有数据,只是将道具传递给孩子似乎是毫无意义的管道。

标签: reactjs redux


【解决方案1】:

如果许多组件使用相同的数据,最好通过存储来获取它。另一个优点是,如果需要将数据传递给 n 级嵌套组件,其中 n 很大,最好使用 store 而不是传递 props,因为它可能会使组件更易于编写。

这些是我更喜欢使用商店的原因。但这不是一个通用的答案。对此大家可以有自己的看法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 2011-12-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多