Vue 渲染函数

Posted sea-breeze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 渲染函数相关的知识,希望对你有一定的参考价值。

 

Vue 推荐在绝大多数情况下使用模板来创建你的 html。然而在一些场景中,你真的需要 javascript 的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。

 

一 项目结构

 

技术图片

 

二 App组件

 

<template>
  <div id="app">
    <fruit fruitName="Durian" :level="2">
      very  delicious!
    </fruit>
  </div>
</template>

<script>
import "./components/Fruit.js";
export default 
  name: "App"
;
</script>

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

 

三 Fruit组件

 

import Vue from "vue";
import Durian from "./Durian.vue";
import Mongo from "./Mongo.vue";

Vue.component("fruit", 
  props: 
    fruitName: 
      type: String,
      required: true
    ,
    level: 
      type: Number,
      required: true
    
  ,
  data() 
    return 
      shop: "水果店"
    ;
  ,
  render(createElement) 
    const  fruitName, level, shop, $slots, nativeClickHandler  = this;
    const ele = fruitName === "Durian" ? Durian : Mongo;
    return createElement(
      ele,
      
        class: 
          favorFruit: true
        ,
        style: "color:gold;font-style:italic;",
        attrs: 
          id: "favorFruit"
        ,
        nativeOn: 
          click: nativeClickHandler
        ,
        scopedSlots: 
          shop(props) 
            return createElement("h6", shop);
          
        
      ,
      [createElement("h" + level, fruitName), $slots.default]
    );
  ,
  methods: 
    nativeClickHandler() 
      console.log("native click");
    
  
);

 

四 Durian组件

 

<template>
    <div>
        <slot/>
        <slot name="shop"/>
    </div>
</template>
<script>
export default 
  name: "Durian"
;
</script>

 

五 Mongo组件

 

<template>
    <div>
        <slot/>
        <slot name="shop"/>
    </div>
</template>
<script>
export default 
  name: "Mango"
;
</script>

 

六 运行效果

 

技术图片

 

技术图片

 

以上是关于Vue 渲染函数的主要内容,如果未能解决你的问题,请参考以下文章

vue渲染虚拟dom树原理

vue中渲染函数Render原理解析

Vue 3 中的模板渲染与渲染函数 h()

vue3中渲染函数的非兼容变更

Vue躬行记——渲染函数和JSX

vue页面的渲染过程