当前位置: 首页 > news >正文

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>

相关文章:

h函数 render函数 JSX基本用法

1.1认识h函数&#xff08;hyperscript工具 基于JavaScript编写模板的工具&#xff09; Vue推荐在绝大多数情况下使用模板来创建你的HTML&#xff0c;然后一些特殊的场景&#xff0c;需要JavaSript的完全编程能力&#xff0c;可以使用渲染函数&#xff0c;它比模板更接近编译器&…...

购物车操作

添加购物车&#xff1a; 需求分析和接口设计&#xff1a; 接口设计&#xff1a; 请求方式&#xff1a;POST 请求路径&#xff1a;/user/shoppingCart/add请求参数&#xff1a;套餐id、菜品id、口味返回结果&#xff1a;code、data、msg 数据库设计&#xff1a; 这上面出现了…...

华为手机 鸿蒙系统-android studio识别调试设备,开启adb调试权限

1.进入设置-关于手机-版本号&#xff0c;连续点击7次 认证&#xff1a;有锁屏密码需要输入密码&#xff0c; 开启开发者配置功能ok 进入开发者配置界面 打开调试功能 重新在androd studio查看可运行running devices显示了&#xff0c; 不行的话&#xff0c;重启一下android …...

计算机网络——Dijkstra路由算法

实验目的 实现基于 Dijkstra 算法的路由软件 实验内容 网络拓扑如图所示 实验过程 先编写开辟应该图的空间&#xff0c;然后给点映射数字&#xff0c;构建图。程序获取用户输入的学号&#xff0c;构建图中边的权值。接下来程序从用户输入获取最短路径的搜索起点&#xff0…...

AI智能化逐渐趋于成熟后,预测今后最吃香的开发职业

AI智能化正在成熟的路途中&#xff0c;这中间会有波折&#xff0c;但终有一天会来的&#xff0c;我相信等到了这一天&#xff0c;我们的开发效率和代码质量&#xff0c;将会大大不同&#xff0c;而我们的团队与个人&#xff0c;也会面临着很棒的体验。 那么在AI智能化真正趋于成…...

Acwing2024蓝桥杯BFS

AcWing 1355. 母亲的牛奶 bfs: #include<iostream> #include<queue> using namespace std; const int N21; int A,B,C; bool flag[N][N][N]; struct node{int a,b,c; }; queue<node>q; void check(int a,int b,int c){if(!flag[a][b][c]){q.push({a,b,c})…...

vue打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

前言&#xff1a; vue项目&#xff0c;打包报错&#xff1a;CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 报错现象&#xff1a; 报错原因&#xff1a; 这个错误是由Node.js在尝试分配内存时因为系统的可用内存不足而发生的。"JavaScript heap…...

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码 定点小数...

Python学习第四部分 函数式编程

文章目录 高阶函数lambda 表达式和匿名函数偏函数闭包map函数reduce函数filter 函数sorted函数 函数式编程主要学习&#xff1a;高阶函数、闭包closure、匿名函数、偏函数&#xff0c;map函数、reduce函数、filter函数、sorted函数 函数式编程是个很古老的概念&#xff0c;最古…...

数据结构-二叉树-AVL树(平衡二叉树)

红黑树是平衡二叉树的一个变种。 一、 产生平衡二叉树的原因。 二叉搜索树的问题在于极端场景下退化为类似链表的结构&#xff0c;所以搜索的时间复杂度就变成了O(N)。为了保证二叉树不退化为链表&#xff0c;我们必须保证二叉树的的平衡性。 二叉平衡搜索树就是解决上面的问…...

【Qt问题】windeployqt如何提取Qt依赖库

往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是&#xff1a;当我们的程序运行好之后&#…...

VS2019下使用MFC完成科技项目管理系统

背景&#xff1a; &#xff08;一&#xff09;实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。了解科技项目组织管理的主要内容和管理方面的基本常识&#xff0c;熟练应用数据库知识&#xff0c;通过处理过程对计算机软件系统工作原理的进一步理解&…...

【Android】Kotlin学习之数据容器(数组for循环遍历)

数组遍历 1. for ( item in arr){…} 2. for ( i in arr.indeces ) {…} (遍历下标) 3. for ((index, item) in arr.withInfex()) {…} (遍历下标和元素) 4. arr.forEach {} ( 遍历元素 ) 5. arr.forEachIndexed{index, item -> …}...

JavaWeb_请求响应_简单参数实体参数

一、SpringBoot方式接收携带简单参数的请求 简单参数&#xff1a;参数名与形参变量名相同&#xff0c;定义形参即可接收参数。并且在接收过程中&#xff0c;会进行自动的类型转换。 启动应用程序后&#xff0c;在postman中进行测试&#xff1a; 请求成功&#xff0c;响应回了O…...

windows端口复用

1. 概述 使用 HTTP.sys 中的 Net.tcp Port Sharing 服务&#xff0c;配合 WinRM 实现端口复用。 优点&#xff1a; HTTP.sys 为 windows 原生机制&#xff0c; WinRM 为 windows 自带功能&#xff0c;动作较小&#xff0c;不易触发主 动防御。 需要管理员权限。 2. 原理 (…...

[Redis] 使用布隆过滤器和分布式锁实现用户注册

布隆过滤器&#xff08;Bloom Filter&#xff09;是一种数据结构&#xff0c;用于快速判断一个元素是否可能存在于一个集合中。它通过使用多个哈希函数和一个位数组来表示一个集合&#xff0c;当一个元素被加入到集合时&#xff0c;通过哈希函数计算出多个哈希值&#xff0c;并…...

Okhttp 发送https请求,忽略ssl认证

工具类 import lombok.extern.slf4j.Slf4j;import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509Tru…...

IT项目管理-大题【太原理工大学】

一、根据进度网络写出时间参数表、关键路径、总工期 此类题一般是给一个表&#xff0c;问三问。 第一问会问某个活动的时间参数&#xff0c;但我们需要把整个表都求出来&#xff0c;否则单求一个很困难&#xff08;如果你就是不想求整张表也行&#xff0c;不是硬性要求&#xf…...

【代码随想录】day48

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、198打家劫舍二、213打家劫舍II三、337打家劫舍III 一、198打家劫舍 class Solution { public:int rob(vector<int>& nums) {vector<int> dp(n…...

【补充】1-auth的使用、扩写auth的user表、django支持缓存

1 Auth的使用 1.1 扩写auth的user表 2 缓存 1 Auth的使用 # django 的一个app---》用户的登录&#xff0c;退出&#xff0c;注册。。。# 配置文件中配置&#xff1a;---》表会被迁移INSTALLED_APPS [django.contrib.auth,]# auth有哪些表---权限控制&#xff1a;-Permission&a…...

力扣-21. 合并两个有序链表-js实现

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} list1* param {ListNode} list2* return {ListNode}*/ const mergeTwoList…...

tensorflow报错

参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…...

企业数字化转型走向平台化运营会经历哪些阶段?

蚓链实践总结企业数字化转型走向平台化运营通常会经历以下几个阶段&#xff1a; 1. 规划与准备阶段&#xff1a;明确转型目标和战略&#xff0c;评估现有业务和技术状况&#xff0c;制定转型计划。 2. 基础建设阶段&#xff1a;搭建数字化基础设施&#xff0c;包括云平台、数…...

最新AI实景自动无人直播软件教你实现24小时不下播带货;智能化引领直播新时代

随着互联网的快速发展&#xff0c;直播行业已经成为商家品牌推广和商品销售的热门方式。而如今&#xff0c;一款令人惊叹的AI实景自动无人直播软件正在让直播变得更加智能化和便捷化&#xff0c;为商家带来全新的直播体验。 AI实景自动无人直播软件的一大优势是其智能讲解功能。…...

《二十一》QT QML编程基础

QML概述 QML&#xff08;Qt Meta-Object Language&#xff09;是一种声明性语言&#xff0c;它被用于描述Qt框架中用户界面的结构和行为。QML提供了一种简洁、灵活的方式来创建动态和交互式的界面。 QML基于JavaScript语法&#xff0c;通过使用QML类型和属性来定义界面的元素…...

免费的发票查验接口平台 PHP开发示例

信息爆炸的时代&#xff0c;发票管理工作也在不断走向数字化管理。传统手动录入的方式不仅耗时长&#xff0c;繁琐低效&#xff0c;且容易出现人为错漏的风险&#xff0c;让财务工作者头疼不已。人工智能时代&#xff0c;翔云推出了发票识别发票查验接口&#xff0c;以此来助力…...

10、算数运算符(以 ‘/’、‘%’、‘++’为主去讲解)(Java超详细版本)

算数运算符 一、算数运算符二、“ / ”的使用三、“ % ”的使用四、“ ”的使用⭐ 一、算数运算符 算数运算符是对数值类型的变量进行运算的&#xff0c;在Java程序中使用的非常多的。 二、“ / ”的使用 1、Java中 “ / ” 的运算结果是省略小数部分的整数&#xff0c;不存…...

向量数据库:PGVector

一、PGVector 介绍 PGVector 是一个基于 PostgreSQL 的扩展插件&#xff0c;为用户提供了一套强大的向量存储和查询的功能&#xff1a; 精确和近似最近邻搜索单精度&#xff08;Single-precision&#xff09;、半精度&#xff08;Half-precision&#xff09;、二进制&#xff…...

redux实现原理

Redux 是一个用于 JavaScript 应用程序状态管理的库。它被设计用来管理整个应用程序的状态&#xff0c;并且与 React 结合使用时非常流行。Redux 的实现原理可以简要概括为以下几个关键概念&#xff1a; 单一数据源 (Single Source of Truth)&#xff1a;Redux 应用程序的所有状…...

【go项目01_学习记录04】

学习记录 1 集成 Gorilla Mux1.1 为什么不选择 HttpRouter&#xff1f;1.2 安装 gorilla/mux1.3 使用 gorilla/mux1.4 迁移到 Gorilla Mux1.4.1 新增 homeHandler1.4.2 指定 Methods () 来区分请求方法1.4.3 请求路径参数和正则匹配1.4.4 命名路由与链接生成 1 集成 Gorilla Mu…...

大型外贸商城网站建设/南宁seo排名优化

市场要闻 韩国釜山发行地区性数字货币&#xff0c;力促自由贸易区发展 2019年4月&#xff0c;韩国选择釜山市为优先自由贸易特区&#xff0c;并于当地发行地域性数字货币。该决议将于7月末&#xff0c;进入“优先自由贸易特区委员会”的审查会议和讨论决议程序。7月1日&#x…...

赤峰做网站的网络公司/百度如何做广告

首先要说的是本文所说的缺陷并非指指针悬空或野指针造成的程序崩溃&#xff0c;我觉得那些问题只要小心的处理&#xff0c;是可以避免的。本文所说的缺陷是指指针对C对象封装的破坏。 想到写这个话题是因为看到有人问了一个问题“基类的私有成员会不会被子类继承&#xff1f;”…...

公司网站制作流程/提高百度搜索排名工具

修饰器&#xff1a;修饰器是一种特殊类型的声明&#xff0c;它只能够被附加到类的声明、方法、属性或参数上&#xff0c;可以修改类的行为。而不能用于函数&#xff08;因为存在函数提升&#xff09; 常见的修饰器有&#xff1a;类修饰器、属性修饰器、方法修饰器、参数修饰器 …...

wordpress stheme/百度下载app下载安装

前言&#xff1a;第一次写文章&#xff0c;因为自己的技术深度&#xff0c;广度都不够&#xff0c;所以一直惧怕写文章&#xff0c;一直都是看别人的文章。去年年终总结的时候定下一个计划&#xff0c;就是发布一篇有深度的文章&#xff0c;奈何深度一直不够。就先发布一篇有水…...

网站开发人员 组织架构/百度收录关键词查询

TML 表格 表格由 <table> 标签来定义。 每个表格均有若干行(由 <tr> 标签定义)&#xff0c;每行被分割为若干单元格(由 <td> 标签定义)。 字母 td 指表格数据(table data)&#xff0c;即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、…...

本地升级wordpress/关键词你们懂的

HTTP 的 Keep-Alive&#xff0c;是由应用层&#xff08;用户态&#xff09; 实现的&#xff0c;称为 HTTP 长连接&#xff1b; TCP 的 Keepalive&#xff0c;是由 TCP 层&#xff08;内核态&#xff09; 实现的&#xff0c;称为 TCP 保活机制 HTTP 的 Keep-Alive HTTP 是基于…...