react map莫名其妙刷新初始化原因

今天写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
如果帮助到你,能点个赞吗?

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值