在mobx存储中改变状态时,Ant-Design表不显示。

问题描述 投票:0回答:1

我在蚂蚁设计的Table组件中,对点击一行的行为进行编程。这应该改变Table上的rowClassName。下面是CodeSendBox上的一个例子. 当你点击表格行时,Store.selectedRowKey中的值会发生变化,但表格没有重新渲染。如果您将分界滑块移动到沙盒中,并且表的大小发生变化,那么就会发生渲染,并应用新的行选择。

antd mobx
1个回答
0
投票

基本上你不使用 selectedRowKey 的内部,所以这就是为什么当它发生变化时不会重新渲染。

你将一个回调函数传递给一个 Table 不过 Table 不是观察者。

我不知道是否可以将它在 antd,但你还可以做什么。

1) 只要用 selectedRowKey 在你的渲染中的某个地方。就像 console.log 然后当行被点击时,你的整个组件将重新渲染(包括表)。

或者更好的方法,把它和 data 行,例如添加 isSelected 渲染和改变内部各数据的键 rowClassName 来使用这个标志。

dataSource={data.map(item => ({...item, isSelected: this.props.Store.selectedRowKey === item.key}))}
rowClassName={x => x.isSelected ? 'test-table-row-selected' : ''}

2)使用 antd rowSelection 那样的道具 rowSelection={{selectedRowKeys: [selectedRowKey]}}. 但它也会给每一行添加复选框。

© www.soinside.com 2019 - 2024. All rights reserved.