问题概述
使用了Antd Table
组件,因为需要自定义的筛选功能,进行了二次封装。
之后加上了可编辑行功能,当点击编辑图标,发现表格并不会有任何变化。
代码:
<Form
component={false}
form={docInfoForm}
>
<CSTable
dataSource={dataSource}
setDataSource={setDataSource}
columns={mergedColumns}
rowSelection={rowSelection}
rowKey="key"
components={{
body: {
cell: DocInfoEditableRow
}
}}
/>
</Form>
解决思路
因为没有任何报错,只能猜有可能出错的地方
- 封装的Table组件内部有问题
引入了原本的Table组件,逐一排查,逐一比较不同的地方。发现还是没有什么眉目。
偶然一次注释了Form
组件的component
属性,发现居然渲染出来了。就让我猜测可能是React
没有识别到dom
的变化,所以我在CSTable
上加了key
属性,给的值是随机数,发现果然可行!
解决办法
const randomKey = Math.floor(Math.random() * 10000) + 1
<Form
component={false}
form={docInfoForm}
>
<CSTable
dataSource={dataSource}
setDataSource={setDataSource}
columns={mergedColumns}
rowSelection={rowSelection}
rowKey="key"
components={{
body: {
cell: DocInfoEditableRow
}
}}
key={randomKey} -- 添加的随机key
/>
</Form>