a-tag实现点击选中,再次点击取消选中 且每次点击都需要调接口刷新页面

使用ant中的a-tag,点击选中渲染页面中的列表(做筛选),再次点击取消选中且把完整的列表展示出来(不做筛选)->到这个一步之后在重复点击同一个tag就会处在只能把完整的列表展示出来并不会在点击选中渲染。
(tag的列表是这样子的data:[0:{name:xx,id:1,label:[0:{label_id:2},1:{label_id:35}]},1:{name:xx,id:1,label:[0:{label_id:2},1:{label_id:35}]})

您可以使用Ant Design中的Checkbox组件来实现这个功能。首先,您可以根据tag的列表数据生成对应的Checkbox列表,然后使用state来记录当前选中的标签。当点击Checkbox时,将选中的标签添加到state中并重新渲染页面,实现筛选功能。当再次点击已选中的Checkbox时,将选中的标签从state中移除并重新渲染页面,实现取消筛选并展示完整列表的功能。

以下是一个示例代码,您可以根据自己的实际情况进行修改:

import React, { useState } from 'react';
import { Checkbox } from 'antd';

const TagFilter = ({ tagsData }) => {
  const [selectedTags, setSelectedTags] = useState([]);

  const handleTagChange = (tagId) => {
    if (selectedTags.includes(tagId)) {
      setSelectedTags(selectedTags.filter((id) => id !== tagId));
    } else {
      setSelectedTags([...selectedTags, tagId]);
    }
  };

  const renderTagList = () => {
    if (selectedTags.length === 0) {
      // 没有选中的标签,展示完整列表
      return tagsData.map((tag) => (
        <div key={tag.id}>
          <span>{tag.name}</span>
          {/* 在这里展示其他信息 */}
        </div>
      ));
    } else {
      // 有选中的标签,根据选中的标签筛选列表
      const filteredTags = tagsData.filter((tag) =>
        tag.label.some((label) => selectedTags.includes(label.label_id))
      );
      return filteredTags.map((tag) => (
        <div key={tag.id}>
          <span>{tag.name}</span>
          {/* 在这里展示其他信息 */}
        </div>
      ));
    }
  };

  return (
    <div>
      {tagsData.map((tag) => (
        <Checkbox
          key={tag.id}
          checked={selectedTags.includes(tag.id)}
          onChange={() => handleTagChange(tag.id)}
        >
          {tag.name}
        </Checkbox>
      ))}
      {renderTagList()}
    </div>
  );
};

export default TagFilter;

在上面的代码中,TagFilter组件接受一个tagsData参数,该参数为一个数组,包含了tag的列表数据。在组件内部,使用useState来定义selectedTags状态,用于记录当前选中的标签。当Checkbox被点击时,调用handleTagChange函数来更新selectedTags状态。renderTagList函数根据selectedTags状态来渲染展示的列表,如果没有选中的标签,则展示完整列表,否则根据选中的标签筛选列表。

您可以将TagFilter组件添加到您的页面中,并将tag的列表数据作为参数传递给它,然后在页面中使用<TagFilter tagsData={yourTagsData} />来渲染标签筛选器。