naive UI tree组件实现增删改功能

这篇具有很好参考价值的文章主要介绍了naive UI tree组件实现增删改功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.tree组件

 2.实现思路

3.代码实现

1. 页面部分

2.js部分:

1.节点内容渲染函数

2.节点后缀渲染函数

3.节点点击事件


1.tree组件

     naive UI是Vue 3是组件库,其中的tree组件可以生成树形目录结构,官网提供了很多功能演示,例如拖放节点等。但是并没有提供增删改功能的演示。

naive UI tree组件实现增删改功能,javascript,前端,vue,typescript

 2.实现思路

    参考element-ui tree结构增删改功能的实现思路,naive UI的tree组件实现思路可以概括为:

  1. 增加功能:点击增加按钮,增加一个节点,前端实现输入框,可以在输入框中修改节点名称。
  2. 修改功能:双击节点,节点变为输入框,可以在输入框中修改节点名称。
  3. 删除功能:选中节点,出现删除按钮,点击删除按钮可以删除节点。

3.代码实现

    naive UI的tree组件提供了节点内容渲染函数,节点后缀渲染函数,增删改的功能可以结合节点点击事件、节点内容渲染函数和节点后缀渲染函数来实现。

naive UI tree组件实现增删改功能,javascript,前端,vue,typescript

1. 页面部分

<template>
  <div class="input-div">
    <n-space justify="center">
      <n-input
        v-model:value="pattern"
        size="small"
        class="input"
        placeholder="按名称查询"
      ></n-input>
    </n-space>
  </div>
  <div class="div-tree" >
    <n-tree
      class="tree"
      selectable
      :pattern="pattern"
      :data="datatree"
      :node-props="checkCamera"
      :render-switcher-icon="renderSwitcherIcon"
      default-expand-all
      block-line
      show-irrelevant-nodes
      :render-label="nodelabel"
      :render-suffix="nodesuffix"
    />
  </div>
</template>

2.js部分:

1.节点内容渲染函数

根据option.isedit参数判断节点渲染出来的是输入框还是文本,props.isedit用来控制在使用该组件是否开启编辑功能。

//节点内容渲染函数
const inputRef = ref()
const nodelabel = ({ option }: { option: TreeOption }) => {
  //  console.log(option.key)
  return h(
    'div',
    { class: 'node', style: { height: '0.25rem', width: '1.8rem' } },
    option.isedit == true && props.isedit
      ? h(NInput, {
          autofocus: true,
          ref: inputRef,
          size: 'small',
          value: option.label,
          onUpdateValue: v => {
            option.label = v
          },
          onChange: () => {
            option.isedit = false
          },
          onBlur: () => {
            option.isedit = false
          }
        })
      : option.label
  )
}

2.节点后缀渲染函数

用option.children来判断tree的层级,来确定渲染的后缀是删除按钮还是增加按钮。 option.key == key.value用来判断该节点是否被选中,选中增渲染出删除按钮。

//节点后缀渲染
const nodesuffix = ({ option }: { option: TreeOption }) => {
  if (
    !option.children &&
    option.key == key.value &&
    props.isdelect
  ) {
    return h(
      NButton,
      {
        text: true,
        type: 'info',
        color: '#00EAFF',
        size: 'tiny',
        onClick: e => {
          deltree(option.key), e.stopPropagation()//自定义节点删除函数
        }
      },
      { default: () => '删除' }
    )
  } else if ((option.children) && props.isadd) {
    return h(
      NButton,
      {
        type: 'info',
        color: '#007293',
        bordered: true,
        round: true,
        size: 'tiny',
        textcolor: '#CFFBFF',
        onClick: e => addnode(e, option.key)//自定义新增节点函数
      },
      { default: () => '+新增' }
    )
  }
}

3.节点点击事件

单击为选中节点事件,双击为编辑节点事件,双击节点, option.isedit = true,使得节点渲染函数渲染出输入框,可以修改节点名称。文章来源地址https://www.toymoban.com/news/detail-528289.html

const key = ref()
//节点点击事件
const checkCamera = ({ option }: { option: TreeOption }) => {
  return {
    onClick() {
      emits('optionlabel', option.label)
      //console.log(option.label)
      key.value = option.key
    },
    ondblclick() {
      //双击事件
      option.isedit = true
      nextTick(() => {
        inputRef.value.focus()
      })
    }
  }
}

到了这里,关于naive UI tree组件实现增删改功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui的el-tree组件实现单选功能及选择子节点,获取所有父级节点或选中所有父级节点

    el-tree是不支持单选的,可以通过选中事件进行处理,实现单选

    2024年02月14日
    浏览(33)
  • Naive UI+Vue3来实现点击按钮一键切换明暗主题的功能

    记录一下如何使用Naive UI+Vue3代码来实现一键切换明暗主题的功能。 效果如下: 终端下输入: 起好项目的名称,然后一路回车即可。 至此Vue3的项目已经搭建完毕,打开http://127.0.0.1:5173/就可以看到项目的默认首页了。 安装Naive UI依赖库 然后我们根据官方出的配置对项目进行

    2024年02月12日
    浏览(30)
  • 小白都会的前端技能---修改element-ui里面的tree组件的icon图标

    在树形组件中,我们渲染到页面上通常来表示一个组织架构的流程,但一般在做的时候会设置打开和关闭为两个不同的字体图标并且在点击的时候可以切换 如下效果图:   打开之前是小加号图标,打开之后是小减号图标 具体方法: 使用element-ui组件设置样式: icon-class =\\\"图标类名\\\"可

    2023年04月18日
    浏览(32)
  • element UI tree 搜索功能实现

    最近需求想要一个树状结构的带搜索功能的目录,要求目录包含搜索文字的高亮,如果父级收起则父级高亮,如果跨级收起 则收起的级别高亮 不限制层级 例如:搜索文字为D,收起C则C高亮, 直接收起A则A高亮 A           B                 C              

    2024年04月29日
    浏览(27)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(43)
  • 使用easyui的tree组件实现给角色快捷分配权限功能

    这篇文章主要介绍怎么实现角色权限的快捷分配功能,不需要像大多数项目的授权一样,使用类似穿梭框的组件来授权。 具体实现:通过菜单树的勾选和取消勾选来给角色分配权限,在这之前,需要得到角色的菜单树,角色已有的权限对应树节点的选中状态为true,否则为f

    2024年02月14日
    浏览(27)
  • Element Ui Tree组件实现增、删、改、查、拖拽节点 的树形结构

    介绍:首先组件 | Element官网某些功能都具备了,这里我就把这些功能结合在一起更完美的使用,其次 编辑节点 官网是没有实例,所以这里搞了一套较完整的功能,其次编辑和添加,这里直接使用了弹窗(顾及到多个参数设置),接下来效果图展示! 效果图如下: 1,其中点

    2024年02月13日
    浏览(48)
  • Naive UI 组件使用体验之-级联选择 Cascader

    地址区域选择 安装依赖 npm install naive-ui -D 按需引入之-手动引入 使用 这里我们是要对收货地址进行一个增加操作。 我们这里只针对 所在地址 进行说明。 获取region 这里需要通过接口提前请求

    2024年02月11日
    浏览(27)
  • Vue + Element UI 前端篇(七):功能组件封装

    为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度。 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航、头部和主内容三个组件。 Home.vue HeadBar.vue MenuBar.vue Main.vue 国际化语言切换也被封装成为了组

    2024年02月09日
    浏览(31)
  • JavaEE-SSM-订单管理-前端增删改功能实现

    从列表页面切换到添加页面 编写对应添加页面的路由 * 编写添加功能 列表页面跳转到更新页面,以参数的方式传递id 编写路由 创建路由对应的vue页面 编写修改功能:先通过id查询详情,并回显到表单,修改内容后,提交表单 点击进行删除 删除操作 列表页面的完整代码

    2024年01月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包