我在蚂蚁设计的Table组件中,对点击一行的行为进行编程。这应该改变Table上的rowClassName。下面是CodeSendBox上的一个例子. 当你点击表格行时,Store.selectedRowKey中的值会发生变化,但表格没有重新渲染。如果您将分界滑块移动到沙盒中,并且表的大小发生变化,那么就会发生渲染,并应用新的行选择。
基本上你不使用 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]}}
. 但它也会给每一行添加复选框。