Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

复选框条件下,大数据量的数据回显会卡死。这个有办法解决吗 #43

Closed
oubohua opened this issue Feb 1, 2024 · 5 comments

Comments

@oubohua
Copy link

oubohua commented Feb 1, 2024

No description provided.

@wchbrad
Copy link
Owner

wchbrad commented Feb 1, 2024

你是一次全选么?贴一个最小化复现代码

@oubohua
Copy link
Author

oubohua commented Feb 1, 2024

我是模拟了获取数据,默认选中的

<template>
  <div>
    <el-button type="primary" @click="setTreeValue">赋值</el-button>
    <vue-easy-tree
      ref="veTree"
      node-key="id"
      height="400px"
      :data="treeData"
      :props="props"
      :show-checkbox="true"
      :default-expanded-keys="['abc']"
      :default-checked-keys="checkSelectKeys"
    ></vue-easy-tree>
  </div>
</template>

<script>
import VueEasyTree from "@wchbrad/vue-easy-tree";
import "@wchbrad/vue-easy-tree/src/assets/index.scss";
export default {
  name: "Test",
  props: [],
  data() {
    return {
      props: {
        label: "name",
        children: "children",
      },
      checkSelectKeys: [],
      treeData: [],
    };
  },
  components: { VueEasyTree },
  created() {},
  mounted() {
    this.setTree();
  },
  methods: {
    setTree() {
      let arr = [];
      for (let i = 0; i < 20000; i++) {
        arr.push({ id: `id-${i}`, name: `name-${i}` });
      }
      let tree = [{ id: "abc", name: "全部", children: arr }];
      this.treeData = tree;
    },
    setTreeValue() {
      let arr = [];
      for (let i = 10; i < 3000; i++) {
        arr.push(`id-${i}`);
      }
      this.checkSelectKeys = arr;
      // this.$refs.veTree.setCheckedKeys(arr);
    },
  },
};
</script>

<style lang="scss" scoped>
</style>

@wchbrad
Copy link
Owner

wchbrad commented Feb 1, 2024

用以下代码替换setTreeValue方法

setTreeValue() {
      let arr = [];
      for (let i = 10; i < 3000; i++) {
        arr.push(`id-${i}`);
      }
      const allNodes = this.$refs["veTree"].store._getAllNodes();

      for (const node of allNodes) {
        if (arr.includes(node.key)) {
          node.checked = true;
        }
      }
},

@oubohua
Copy link
Author

oubohua commented Feb 1, 2024

这个方法可以

@wchbrad wchbrad closed this as completed Feb 2, 2024
@oubohua
Copy link
Author

oubohua commented Feb 2, 2024

这个还有点小问题,父级没有半选的状态。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants