【发布时间】:2020-01-17 09:38:46
【问题描述】:
在 React 中,假设您有一个要显示列表的组件。
将列表传递给组件的哪种方法更符合 React/Redux?
- 传递对象数组
- 只传递一个键数组,外加一个映射(字典)来查找对象
例如:
<ListComponent data={objectArray} />
对比
<ListComponent keyArray={keyArray} dictionary={mapOfKeyToObject} />
请考虑性能、可重用性、可接受的约定和测试。
谢谢
编辑: 澄清一下,我的意思是对象的 ID 字段中的键(不是说 React 用于在渲染中识别的键)。
问题与[https://redux.js.org/basics/reducers#note-on-relationships]:
有关在更复杂的应用中,您会希望不同的实体相互引用。我们建议您保持您的状态为 尽可能标准化,没有任何嵌套。将对象中的每个实体都以 ID 作为键存储,并使用 ID 来引用它 其他实体或列表。 ...例如,保持 todosById: { id -> todo } 和 todos: 状态内的数组 在真正的应用中会是一个更好的主意。
那么,将字典传递给组件(例如 todosById)加上第二个数组(仅包含要显示的键/ID)与仅包含对象的子集数组相比,是否更好?
考虑到这些对象可能会被其他组件更新。
【问题讨论】:
-
我不太明白这个问题。如果您需要一个数组,请传递一个数组。我没有看到传递一个已经有键的对象有任何好处,和这些键的附加数组。最终,这将取决于您需要如何准确地使用这些数据。如果你的意思是 React 想要渲染的键中的“键”,我看不出有任何令人信服的理由来预生成它们——这并不意味着 没有 任何令人信服的理由(就像它是否非常昂贵或其他什么?)但我从未见过那个 IRL。
标签: reactjs redux react-redux