豆芽特特子 2022-06-20 14:33 采纳率: 0%
浏览 156
已结题

vue-如何在模板中使用渲染函数生成的vnode

问题遇到的现象和发生背景

如代码所示,test方法返回一个vnode,我应该怎么去使用他,把他替换到ref为testdiv的渲染函数里面。

我想要达到的结果

我的期望是他应该会有一个类似v-render的方法可以直接替换修改-原转换后的渲染函数。但实际上vue好像不存在这个方法,请问有什么办法吗?

我的解答思路和尝试过的方法

之前有用过vue.comp创建组件再用v-is来修改,但是写起来颇为麻烦,且不美观,感觉不该这样子做,怀疑是自己想岔了,走入了误区。

问题相关代码
<template>
  <div>
    <div   v-render='test' ref="testdiv”></div>
    <div>...<!-- 此处省略很多行代码 --></div>
  </div>
</template>
<script>
export default {
  data() {
    return {
        text:',而且获取到了数据'
    };
  },
  computed: {},
  methods: {
    test(){
        return  this.$createElement('span',{},`这是由渲染函数产生的文本vnode${this.text}`)
    }
  },
  mounted() {
    setTimeout(() => {
        this.text.push(',甚至还是响应式的')
    },5000);
  },
};
</script>
  • 写回答

5条回答 默认 最新

  • 归来巨星 前端领域新星创作者 2022-06-20 15:03
    关注
    获得1.05元问题酬金

    render 渲染函数 呈现一个组件状态

    
    <script>
    export default {
      name: "RenderCell",
      functional: true,
      props: {
        render: Function,
      },
      render: (h, ctx) => {
        return ctx.props.render(h);
      },
    };
    </script>
    
    

    子组件想让其放置在哪使用就让其放置在哪里使用

                <render-cell :render="renderFunc"></render-cell>
    
    renderFunc(){
       return this.render // 这个this.render 就可以是你的this.$createElement('span',{},`这是由渲染函数产生的文本vnode${this.text}`)
    }
    

    img

    两者一样的逻辑 你可以参考这个实例去使用

    评论

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 修改了问题 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络