【发布时间】:2017-11-30 06:03:09
【问题描述】:
https://codesandbox.io/s/qYEvQEl0
所以我自己编写了一个演示,与一个有效的示例相比,它不起作用,唯一的区别是 <List/> 的一个道具
rowHeight={({ index }) => 50}
rowHeight={50}
我使用后一种方式。它不工作。为什么?
【问题讨论】:
https://codesandbox.io/s/qYEvQEl0
所以我自己编写了一个演示,与一个有效的示例相比,它不起作用,唯一的区别是 <List/> 的一个道具
rowHeight={({ index }) => 50}
rowHeight={50}
我使用后一种方式。它不工作。为什么?
【问题讨论】:
从duplicate GitHub issue you filed复制的答案;)
这会在每次渲染时创建一个新的函数道具:
rowHeight={({ index }) => 50}
即使没有其他属性发生变化,prop-change 也足以触发子组件的重新渲染。在上面的第二个例子中,props 根本没有改变,所以List 不知道它需要重新渲染。 (查看文档中的the section on "pure components" 了解更多信息。)
在这种情况下,您可以传递一个小属性,每次排序顺序更改时都会更改(例如递增的计数器),以让组件知道重新渲染。您也可以拨打forceUpdate。
【讨论】: