在我的项目中我有表,每行都有自己的类取决于状态。 我也有专栏,所以当我做水平滚动时,一些列是固定的。
我的问题是,当某个州正在发生变化时(例如,从none
变为rejected
),我需要将此行标记为rejected
className并更改背景颜色。
使用setState
是有问题的,因为整行都被重新渲染,因此我的粘性列已经消失(我会对每个scroll
事件进行计算)。
问题是:是否有任何其他解决方案可以更改反应className
而不重新渲染我的行? (除了jQuery)
答案 0 :(得分:0)
更改Row组件中的状态,以便更新类。然后,在您的子组件上使用PureComponent(https://github.com/facebook/react/pull/7195),这样除非他们自己的道具发生变化,否则它们不会重新渲染。这会解决你的问题吗?
答案 1 :(得分:0)
fprintf
道具。
key
我曾经传递过lodash的return (
<tr>
{cells.map(cell => (<td key={_.uniqueId()}>{cell.val}</td>))
</tr>
)
值 - 这导致了我的问题。
解决方案是用一些uniqe字符串替换这个唯一的id,在我的情况下是两个ID和列名的组合。
所以最终解决方案如下:
_.uniqueId()
这是解释为什么它再次摧毁和重新渲染: https://facebook.github.io/react/docs/multiple-components.html#dynamic-children