今天写react时,用到 map,
但发现点击antd Table 想要选中一条数据时,map莫名其妙的刷新初始化了
给出大概结构
import React from 'react';
import useColumns from '...';
function myfunc(){
...
const inputmap = new Map();
...
return (<div>
<Table
dataSource={mydata}
columns={useColumns(inputmap)}
rowSelection={{
onChange: (selectedRowKeys, selectedRows) => {
//inputmap的一些操作
}
}}
/>
</div>
)
}
export defalult myfunc;
因为这个表格有修改的部分,我用inputmap保存起来了,在onchange 时需要用,但是当点击第一条数据时正常,但是点第二条时,我的map被刷新了,修改的东西都不见了
在onChange内添加console.log(inputmap)
结果如下:
//第一次点击
Map(2) {...}
//第二次点击
Map(0) {}
经检查没有写任何初始化map的语句
在唯一map初始化的地方,添加console.log(‘1’)
可以发现当我选中table中的任一一条数据时,都会弹出1
所以可以确认是table 的 rowSelection onChange触发时,会刷新整个Function
找到原因了就可以解决
以下是解决办法:
import React from 'react';
import useColumns from '...';
const inputmap = new Map();
function myfunc(){
...
return (<div>
<Table
dataSource={mydata}
columns={useColumns(inputmap)}
rowSelection={{
onChange: (selectedRowKeys, selectedRows) => {
//inputmap的一些操作
}
}}
/>
</div>
)
}
export defalult myfunc;
只要把定义map的语句放到function外面就行
稳健hhh
如果帮助到你,能点个赞吗?