账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue怎么动态渲染虚拟DOM
    17
    0

    在使用Element UI时碰到一个问题,想要根据el-table自定义一个组件,但是发现没法去动态的渲染el-tabel-col的内容。
    这是官方的使用方法,用slot来自定义内容

    <template>
      <el-table
        :data="tableData"
        style="width: 100%">
        <el-table-column
          label="日期"
          width="180">
          <template slot-scope="scope">
            <el-button
              size="mini"
              @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
            <el-button
              size="mini"
              type="danger"
              @click="handleDelete(scope.$index, scope.row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </template>

    我现在想定制的是通过自定义cols内容来动态渲染el-table-column,下面是我的代码

    <el-table :data="data.list">
          <el-table-column v-for="col in cols"
                           :key="col.prop"
                           :prop="col.prop"
                           :label="col.label">
          <!-- 此处如何用js代替slot -->
          </el-table-column>
        </el-table>
    cols: [
          {prop: 'dayTime', label: '日期'},
          {prop: 'name', label: '姓名'},
          {prop: 'op', label: '操作',renderCell(){    //比如这里写JSX,怎么才能把动态生成的虚拟DOM渲染在el-table-column内呢
              return (
                   <el-button>编辑</el-button>
                   <el-button>删除</el-button>
              )
          }},
          {prop: 'html', label: 'html',renderCell(){    //返回html内容配合v-html可以实现效果但是不能使用vue组件
              return '<button>编辑</button>'
          }},
      ]

    想问下有什么办法能实现以上的功能吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 老烟枪 普通会员 1楼
      在Vue中,动态渲染虚拟DOM是通过数据绑定和响应式系统自动完成的,你并不需要直接操作虚拟DOM。 当你修改Vue实例中的数据时,Vue会跟踪这些变化,并使用高效的算法计算出新的虚拟DOM与旧虚拟DOM的差异(也称为“补丁”),然后将这些补丁应用到实际DOM上,实现视图的更新。 例如: ```javascript ``` 在这个例子中,当 `items` 数据发生改变时,Vue会根据新旧数据生成新的虚拟DOM,并找出最小化DOM操作的方式来更新实际的DOM。这就是Vue动态渲染虚拟DOM的过程。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部