h函数 render函数 JSX基本用法

1.1认识h函数(hyperscript工具 基于JavaScript编写模板的工具)

    Vue推荐在绝大多数情况下使用模板来创建你的HTML,然后一些特殊的场景,需要JavaSript的完全编程能力,
    可以使用渲染函数,它比模板更接近编译器;
    VNode和VDOM的生成:
      Vue在生成真实的DOM之前,会将我们的节点转换成VNode,而Vnode组合在一起形成一棵树结构,就是虚拟DOM(VDOM)
      编写template中的html最终也是使用渲染函数生成对应的VNode;
      可以利用JavaScript的编程能力,我们可以自己来编写createdVnode函数,生成对应的VNode;
     
    h函数:
      创建VNode的一个函数;
    更准备命名的是createdVnode函数,为了简便在Vue中简化为h函数;

  
  注意事项:
    如果没有props,那么通常可以将children作为第二个参数传入;
    如果会产生歧义,可以将null作为第二个参数传入,将children作为第三个参数传入;

1.2.h函数在render中的基本用法

// 基本用法
<script>
  import { h } from 'vue';
  export default {
    render () {
        return h('h2',{ class: 'title' }, 'Hello Render')
    }
  }
</script>

1.3.setup函数中返回VNode

<script>
  import { ref, h } from 'vue';
  export default {
    setup(){ // setup可以返回render函数,可以替代掉render函数
      const counter = ref(100);
      return () => {
         return h('div',{ class: 'app' }, [
          h('h2',null,  `当前计数:${ counter.value }`),
          h('button',{ onClick: () => counter.value++ }, '+1'),
          h('button',{ onclick: () => counter.value-- }, '-1')
        ])
      }
    },
    // render () { // 可以使用this去拿数据,因为render函数内部是绑定了this
    //     return h('div',{ class: 'app' }, [
    //       h('h2',null,  `当前计数:${this.counter}`),
    //       h('button',{ onClick: () => this.counter++ }, '+1'),
    //       h('button',{ onclick: () => this.counter-- }, '-1')
    //     ])
    // }
  }
</script>

1.4.render函数中使用插槽

<script>
  // 父组件
  import { ref, h } from 'vue';
  import HelloWorld from './HelloWorld.vue'
  export default {
    // setup中的return对象怎么放进render函数中?
    // 不是放进去,对this做了一个代理, 例如:取this.counter的时候,proxy(, setupData里面去找这个数据,然后依次是data/ctx/props)
    render(){ // setup可以返回render函数,可以替代掉render函数
         return ('div', null, [
         h(HelloWorld, null, {
            default: props => h('h2', null,`我是App的插槽:${props.name}`) 
          })
         ])
    },
  }
</script>

<script>
// 子组件
import { h } from 'vue'
  export default {
    render () {
      return h('div', null, [
        h('h2', null, 'hello world'),
        this.$slots.default ? this.$slots.default({ name: 'coderwhy' }) : h('h2', null, '我是helloworld默认的插槽')
      ])
    }
  }
</script>

2.1 JSX基本用法

JSX是一种JavaScript的语法扩展,首先运用于React中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。

	  jsx的babel配置
	    在项目中使用jsx,那么我们需要添加对jsx的支持:
	      jsx通常通过babel来进行转换(React编写的jsx就是通过babel转换的)
	      对于Vue,只需要在babel中配置对应的插件即可;
          babel(工具)
      	jsx   ->    render h()
 <script lang="jsx">
 import { ref } from 'vue'
 import HelloWorld from './HelloWorld.vue'
 // 父组件
  export default {
    setup () {
      const counter = ref(0)
      return {
        counter,
      }
    },
    render() {
      const increment = () => this.counter++
      const decrement = () => this.counter--
      return (
        // 下面jsx的html会通过babel转化成h函数,
        <div>
          <h2>当前计数:{ this.counter }</h2>
          <button onClick={ increment }>+1</button>
          <button onClick={ decrement }>-1</button>
          <HelloWorld >
            { {default: props => <button onClick={ increment }>我是按钮</button> } }
          </HelloWorld>
        </div>
      )
    }
  }
</script>




<script lang="jsx">
// 子组件
  export default {
    render () {
      return (
        <div>
          <h2>Hello World</h2>
          { this.$slots.default? this.$slots.default() : '哈哈哈哈' }
        </div>
      )
    }
  }
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/610442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EDA(四)Verilog

EDA&#xff08;四&#xff09;Verilog Verilog是一种用于电子系统设计自动化&#xff08;EDA&#xff09;的硬件描述语言&#xff08;HDL&#xff09;&#xff0c;主要用于设计和模拟电子系统&#xff0c;特别是在集成电路&#xff08;IC&#xff09;和印刷电路板&#xff08;…

关于服务端接口知识的汇总

大家好&#xff0c;今天给大家分享一下之前整理的关于接口知识的汇总&#xff0c;对于测试人员来说&#xff0c;深入了解接口知识能带来诸多显著的好处。 一、为什么要了解接口知识&#xff1f; 接口是系统不同模块之间交互的关键通道。只有充分掌握接口知识&#xff0c;才能…

面试算法之哈希专题

赎金信 class Solution { public:bool canConstruct(string ransomNote, string magazine) {// 小写字母int r_cnt[26];int m_cnt[26];for(int i 0; i< magazine.size(); i) {m_cnt[magazine[i]-a]; // 统计}// 对比for(int i 0; i< ransomNote.size(); i) {if(m_cnt[r…

用幽兰本体验大语言模型

大语言模型&#xff08;LLM&#xff09;是目前炙手可热的话题&#xff0c;每个人都想体验一下大语言模型的魅力。然而如果使用云端的大语言模型服务&#xff0c;则不仅速度慢&#xff0c;而且可能泄露自己的隐私。幽兰代码本使用瑞芯微公司推出的 RK3588 SoC 芯片作为核心硬件&…

财务管理|基于SprinBoot+vue的财务管理系统(源码+数据库+文档)

财务管理系统 目录 基于SprinBootvue的财务管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 1管理员功能模块 2员工功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1…

2024年必看:13大顶尖Scrum工具助力敏捷项目管理

Scrum 管理工具有&#xff1a;PingCode、Jira、Trello、Zoho Sprints、Active Collab、ProProfs Project、Scrumwise、ClickUp、Monday.com、QuickScrum、Yodiz、ScrumDo、nTask 在过去几年中&#xff0c;Scrum方法论已成为敏捷项目管理的主要框架之一。使用Scrum&#xff0c;项…

存储和NFS共享

存储类型 存储类型分为三种 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS网络附加存储&#xff1a;Network-Attached Storage&#xff0c;简称NAS存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN DAS:存储和主机是直连的&#xff0…

为什么 Cloudflare 是 2024 年 Vercel 的最佳替代品?生态系统和价格比较

本文探讨了 Vercel 的功能&#xff0c;并与 Cloudflare 生态系统中的类似产品进行了比较。从托管到存储&#xff0c;我们将看到为什么 Cloudflare 可以在 2024 年成为 Vercel 的最佳替代品。 文章目录 介绍什么是 Cloudflare&#xff1f;Cloudflare vs Vercel&#xff1a;托管和…

防雷防浪涌电路设计

通信线路或者电源线路通常会铺设到户外&#xff0c;一旦线路铺到户外后&#xff0c;就需要考虑防雷的问题了&#xff0c;那么怎么设计保护电路&#xff0c;能够防止雷电等浪涌对电路的破坏呢&#xff1f; 通信线路或者电源线路通常会铺设到户外&#xff0c;一旦线路铺到户外后&…

每日Attention学习3——Cross-level Feature Fusion

模块出处 [link] [code] [PR 23] Cross-level Feature Aggregation Network for Polyp Segmentation 模块名称 Cross-level Feature Fusion (CFF) 模块作用 双级特征融合 模块结构 模块代码 import torch import torch.nn as nnclass BasicConv2d(nn.Module):def __init__(…

Google搜索广告怎么开户?谷歌广告开户投放引流技巧、账户搭建、谷歌ads广告推广投放策略 #搜索引擎 #谷歌广告#互联网营销

Google搜索广告开户步骤&#xff1a; 选择代理商&#xff1a;首先&#xff0c;您需要选择一个经验丰富、信誉良好的Google广告代理商。可以选择上海上弦来广告开户和代运营。 初步咨询&#xff1a;与代理商进行初步沟通&#xff0c;了解他们的服务内容、成功案例、收费标准等。…

Topaz Photo AI for Mac:专业级照片处理软件

Topaz Photo AI for Mac是一款专为Mac用户设计的专业级照片处理软件。它集成了先进的人工智能技术&#xff0c;为用户提供了强大的照片处理功能。无论是照片修复、增强还是转换&#xff0c;Topaz Photo AI都能轻松应对。 这款软件具备强大的AI技术&#xff0c;能够自动识别和修…

苹果新款 M4 芯片专注于 AI

爆炸性消息&#xff01;苹果的新一代 M4 芯片来了&#xff01;这家伙拥有 38 万亿次操作的超强神经引擎&#xff0c;速度比苹果 A11 芯片的 NPU 快 60 倍&#xff01;虽然它的速度还没有达到 Snapdragon X Elite 的 45 TOPS&#xff0c;但苹果自夸 M4 将提供与最新 PC 芯片相同…

直播产业赋能数字经济蓬勃发展!成都东部集团有限公司莅临天府锋巢直播产业基地考察交流

2024年4月25日&#xff0c;天府锋巢直播产业基地迎来了一次重要的考察交流。成都东部集团有限公司产业部副部长高文婷、集团产业部主管罗中婧亲临基地&#xff0c;与天府锋巢直播产业基地的招商总负责人姜国东等基地代表进行了深入的交流和探讨。 姜国东热情接待了来访的考察团…

【ITK配准】第二十二期 Demons变形配准

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK配准中的Demons变形配准,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 基于配准的模型 …

【原创教程】步进MC_HOME回原点模式

我们所用软件:西门子TIA Portal V16编程软件 我们所用硬件:S7-1200系列:CPU1212C;雷赛科技DM542驱动器;西门子TP900 comfort触摸屏 我们的硬件接线 MC_HOME的模式: 一般情况下,西门子PLC的运动控制在使能绝对位置定位之前必须执行“回原点”或是“寻找参考点”。 Pos…

淘宝扭蛋机小程序:扭动未来,乐享购物新纪元

一、引言 在数字化浪潮中&#xff0c;淘宝始终走在创新的前沿&#xff0c;不断探索与尝试新的购物方式。今天&#xff0c;我们骄傲地推出淘宝扭蛋机小程序&#xff0c;以全新的视角和体验&#xff0c;让您在购物的同时感受到无尽的乐趣与惊喜。 二、探索未知的购物乐趣 淘宝…

pyqt5实现帮助文档功能

一般稍微复杂的软件都有帮助文档&#xff0c;用来引导用户慢慢熟悉软件功能&#xff0c;介绍软件的使用细节&#xff0c;今天我也想在分析软件中添加这个功能&#xff0c;实现帮助文档功能其实有几种方式&#xff0c;一种是只实现一个超链接功能&#xff0c;然后把文档做在线上…

如何编写可读性高的嵌入式 C 语言代码?|2024网盘分享6.89G嵌入式-物联网 嵌入式新手C语言必学教程

目录 面向对象的 C 基础知识 结构体 函数指针 将函数指针作为结构体的成员 面向对象语言的特性 语言层次的面向对象 C 语言的面向对象 定义接口 接口的实现 测试 测试代码 结束语 面向对象的 C 面向对象的语言更接近人的思维方式&#xff0c;而且在很大程度上降低了…

N1CTF 2021 -- baby_guess

前言 这个题目与之前做的有所不同&#xff0c;题目并不是创建的一个字符设备或 misc 设备&#xff0c;而是注册了一个新的协议。但是就利用而言跟之前没啥区别&#xff0c;由于不是搞内核开发的&#xff0c;就简单看了看相关的知识 题目分析 内核版本&#xff1a;v5.4.142sm…
最新文章