antd表格添加数据不更新_react 如何最好的实现对列表的增删操作?

我现在在做一个题库项目,一个题库可以对应数道题目,数量多时应该可以是几千上万道题。

现在的搭配是 react+redux+antdesign 在设计这个后台管理系统。

但是有一点我想请教一下各位。

比如说,在为题库新添加题目时,是怎么样个流程比较合适,我有两个想法:

一、

1 、添加 /删除 题目,客户端发起一个请求,服务端处理完毕返回。

2 、待返回后,客户端再发起一个请求,请求返回所有题目的新数据 ,以此新数据来更新客户端列表。

二、

1 、添加 /删除 题目,客户端发起一个请求,服务端处理完毕返回。

2 、由客户端将新添加的数据插入(删除)到原数据中,以此起到更新数据的作用。

第一种要发起两个请求才能完成一件事,第二种只要一个请求,但实现起来有点麻烦。

麻烦就麻烦在于,如何插入,以及如何删除列表中指定的数据 。

我本来是这样写的:

handlerOk = (sourceData) => {

if ( typeof(sourceData) !== "undefined") {

//此处为一个 redux action

this.props.setQuestions(this.props.questions.concat(sourceData));

}

}

this.props.questions 为原始数据

sourceData 为新添加的数据项

都为对象列表

[{id:1,name"test1"}, {id:2,name"test2"}, {id:3,name"test3"}, ]

以上代码确实可以在不请求服务器的情况下更新数据到原始数据中。但是有一个问题,就是插入的数据如果与原始数据项有重复项的时候,是会报错的,因为我采用 id 为 key ,而 key 在渲染时有重复是会报错的。

而如果要排除重复项,因为是对象列表, indexOf 似乎是无效的。只能一个一个遍历对比,感觉这样下来,如果数据量大的时候,应该相当费力。

以前使用 jquery 时,直接操作 dom 虽然粗暴却很容易 。现在使用 react ,感觉不太适应。请各位指点一下,我的需求就是说:

一个展示 列表,有一个新增按钮,删除按钮,当新增时,可以把新添加的数据项更新到列表中,而不用发起请求刷新全部数据。

对于Ant Design的树形表格,你可以使用`expandedRowKeys`属性来控制表格树的展开和折叠。 首先,你需要在组件的state中维护一个包含展开行的keys数组。然后,将该数组传入`expandedRowKeys`属性中。 例如,假设你的表格数据如下所示: ```jsx const data = [ { key: '1', name: 'Parent 1', children: [ { key: '2', name: 'Child 1', }, { key: '3', name: 'Child 2', }, ], }, { key: '4', name: 'Parent 2', children: [ { key: '5', name: 'Child 3', }, { key: '6', name: 'Child 4', }, ], }, ]; ``` 你可以创建一个包含展开行keys的state: ```jsx state = { expandedRowKeys: [], }; ``` 然后,在表格组件中使用`expandedRowKeys`属性: ```jsx <Table dataSource={data} expandedRowKeys={this.state.expandedRowKeys} onExpand={this.handleExpand} columns={columns} /> ``` 接下来,你需要实现`handleExpand`方法来处理行的展开和折叠: ```jsx handleExpand = (expanded, record) => { const { key } = record; const { expandedRowKeys } = this.state; // 如果是展开操作,则将key添加到expandedRowKeys中 // 如果是折叠操作,则将key从expandedRowKeys中移除 const newExpandedRowKeys = expanded ? [...expandedRowKeys, key] : expandedRowKeys.filter(k => k !== key); this.setState({ expandedRowKeys: newExpandedRowKeys }); }; ``` 这样,当你点击表格树的展开按钮时,`handleExpand`方法会被调用,更新`expandedRowKeys`的状态,从而控制表格树的展开和折叠。 关于树形表格的复杂增删改,具体的实现方式会根据你的需求而有所不同。你可以根据需要,在表格添加按钮或其他交互元素,并编写对应的逻辑来实现增删操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值