Ant design List列表删除某一项后如何自动刷新List

发布于 2022-09-12 22:44:58 字数 2536 浏览 10 评论 0

image.png

如图所示,Demo页面中有一个List列表,List中的每一项可以动态删除

问题:点击删除后如何自动刷新列表,就是我该如何触发更新呢?(除了使用redux),同时,刷新是只有List列表刷新而不是整个页面刷新。

当前代码:

const Demo: React.FC<RentAssetProps> = (props) => {

    const [data, setData] = useState<any[]>([])         //列表查询数据

    const getDataList = () => {

            let Iparam = xxxxxxxx....

            queryList(Iparam).then(res => {
                setData(res.data)  //查询列表数据
            })
        }
    }

    useEffect(() => {
        getDataList()
    }, [])

    //找到删除的项,重新给data数组赋值
    const refreshList = (params:any) => {
        let newData = data;
        data.forEach((item,index)=>{
            if(params.id === item.id){
                newData.splice(index,1);
            }
        })
        setData(newData)
    }

    const handleDelete = (params:any) => {
        //删除接口调用
        deleteCase(
            params,
            ()=> {refreshList(params)},
        )
    }

    const renderShowConfirm = (params:any) => {
        Modal.confirm({
            title: 'Confirm',
            icon: <ExclamationCircleOutlined />,
            content: `确认删除?`,
            onOk() {
                handleDelete(params);
            },
            onCancel() {
                console.log('Cancel');
            },
          });
    }

    const renderList = () => {
        if (data) {
            return (
                <>
                    <List
                        bordered={true}
                        className="demo-loadmore-list"
                        itemLayout="horizontal"
                        dataSource={data}
                        renderItem={
                            item => (
                                <List.Item
                                    key={item.id}
                                    actions={[<a key="list-loadmore-edit1" onClick={() => renderShowConfirm(item)}>删除</a>]}
                                >
                                </List.Item>
                            )}
                    />
                </>
            )
        }
        return (
            <>
                <div>暂无数据</div>
            </>
        )
    }


    return (
        <>
            <Card title={'事件列表'}>
                        {renderList()}
            </Card>
        </>
    )
}
export default Demo

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长安忆 2022-09-19 22:44:59
  // 删除单条
  const [tableData, setTableData] = useState([]);
  const renderShowConfirm = (id) => {
    setTableData((state) => state.filter((item) => item.id !== id));
  };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文