TreeSelect 树型选择控件 编辑回显时所选的值与展开后的数据不对应 解决方案

一、业务场景:
最近在使用Vue框架和antd-vue组件库的时候,发现在做编辑回显时** TreeSelect 树型选择控件** 组件的选中的值能拿到,但是在下拉列表的回显位置有偏差。为了大家后面遇到和我一样的问题,给大家分享一下

二、bug信息:
在这里插入图片描述

三、问题原因:
点击下拉框的时候值可能没获取到,所以会默认显示在数据的中间

四、解决方案:
在延时器中 自己手动获取到选中的样式 然后滚动到所选的值上面

五、代码部分

HTML部分
            <a-form-model-item  prop="contentOfDept" >
              <span slot="label" >
                 单位选择
              </span>
              <a-tree-select
                @click="scollView"
                showSearch
                allowClear
                @change="ValChan"
                v-model="form.contentOfDept"
                treeNodeFilterProp="title"
                :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
                :dropdownMatchSelectWidth="true"
                :replace-fields="replaceFields"
                :treeData="depts"
                placeholder="请选择"
                :treeDefaultExpandAll="true"
              >
              </a-tree-select>
            </a-form-model-item>

JS部分
      scollView(){
        setTimeout(()=>{
          // 点击下拉框后定位到选中的值
          const labelHt = document.getElementsByClassName('ant-select-tree-node-selected')[0]
          console.log(labelHt)
          labelHt?.scrollIntoView({
            behavior: 'auto',
            block: 'center',
            inline: 'center',
          });
        },100)
      },

六、效果展示:
在这里插入图片描述

你已经成功了,撒花。
今天的分享到此结束,欢迎小伙伴们一起交流

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Antd TreeSelect组件提供了搜索功能,可以方便地筛选出符合条件的选项。你可以在TreeSelect组件中添加`showSearch`属性,即可开启搜索功能。 以下是一个示例代码: ```jsx import React, { useState } from 'react'; import { TreeSelect } from 'antd'; const { TreeNode } = TreeSelect; const treeData = [ { title: 'Node1', value: '0-0', key: '0-0', children: [ { title: 'Child Node1', value: '0-0-1', key: '0-0-1', }, { title: 'Child Node2', value: '0-0-2', key: '0-0-2', }, ], }, { title: 'Node2', value: '0-1', key: '0-1', }, ]; const TreeSelectDemo = () => { const [value, setValue] = useState(undefined); const onChange = (newValue) => { setValue(newValue); }; return ( <TreeSelect showSearch value={value} placeholder="Please select" style={{ width: '100%' }} dropdownStyle={{ maxHeight: 400, overflow: 'auto' }} onChange={onChange} treeDefaultExpandAll > {treeData.map((item) => ( <TreeNode key={item.key} value={item.value} title={item.title}> {item.children && item.children.map((child) => ( <TreeNode key={child.key} value={child.value} title={child.title} /> ))} </TreeNode> ))} </TreeSelect> ); }; export default TreeSelectDemo; ``` 在上面的示例中,我们添加了`showSearch`属性,并设置了一些其他的属性,如`value`,`placeholder`等。此外,我们还需要为TreeSelect组件提供一些数据,这里使用了一个简单的treeData数组。 当用户在TreeSelect中输入关键字时,Antd会自动筛选出匹配的选项,并将它们展示在下拉菜单中。 希望这个例子能够帮助到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值