vue&jsx文档

vue实例属性

// App.ts
import hBtn from './components/hBtn'
import hUl from './components/hUl' export default {
data(){
return {
theme: "mdui-theme-pink",
accent: "mdui-theme-accent-pink",
users:['aoo', 'boo', 'coo']
}
},
methods:{ },
render(h){
return h('div',{
'class':[this.theme, this.accent],
attrs:{
id: 'app'
}
},[
h(hBtn,{
'class':['mdui-color-theme-accent']
}),
h('ul',{},
[
h('li',{
'class':{
'text-danger':true
},
style:{
color:'red';
}
} ,'start'),
this.users.length
? this.users.map((key, index)=>{
return h('li',key)
})
: h('li','v-if else 这样写')
,
h('li', 'end')
]
),
h(hUl,{
attrs:{
users:['user1', 'user2']
}
})
]);// return end
}, //render end
}

// src/components/hBtn.ts

var Text = {// 在内部定义了一个组件
props:['body'],
render(h){
return h('span',[this.body])
}
} export default {
data(){
return {
myName: "ajanuw"
}
},
methods:{
echo (num:number):void {
alert(num)
}
},
mounted(){
console.log( '组件渲染完成!!')
},
render(h) {
return h(
'button',
{
// 和`v-bind:class`一样的 API
'class':['mdui-btn'],
style: {// 定义 style
fontSize: '22px'
},
attrs:{// 定义attribute, 可以利用这个更组件传递 props
id: "ajanuw"
},
domProps: {// DOM 属性
// innerHTML 会替换组件内部的赋值
},
on: {
click: this.echo.bind(null, 1995)
}
},
[
h(Text, {attrs:{body:"this a "},ref: 'start'} ),
h(Text, {attrs:{// 使用text组件, 传递props
body:this.myName}, ref: 'end'} )
]
);
}
}

// src/components/hUl.ts
// 渲染一个列表 var list = {
props:['body']
render(h){
return h('li', this.body)
}
}; export default {
props:['users'],
render(h){
if(this.users){
if(this.users.length){
return h('ul',{},[
this.users.map((key, index)=>{
return h(list,{
attrs:{
body: key
}
})
})
])
}else{
return h('ul', {}, [
return h(list, {
attrs:{
body: "没有数据哦!"
}
})
])
}
} }, //render end
}

下面是jsx

vue init webpack vueJsx

cd vueJsx

npm install babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props babel-preset-env --save-dev

npm i

npm start

// .babelirc

{
"presets": ["env"],
"plugins": ["transform-vue-jsx"]
}

// App.js

var Text = {
props:['body'],
render(h){
return(
<p
onClick={ ()=> console.log( this.body)}
style={{color:'red'}}
>
hello {this.body}
</p>
);// return end
}
}
var List = {
props:['body'],
render(h){
return (
<li onClick={()=> console.log( this.body)}>{ this.body}</li>
);
}
} export default {
data(){
return {
name:"ajanuw",
users: ['aoo', 'boo']
}
},
methods:{
echo(name){
alert( name)
}
},
render(h){
return (
<div id="app">
<Text body={this.name}/>
<ul>
{
this.users.length !==0
? this.users.map((key, index)=>{
return <List body={key} key={index}/>
})
: <li>没有数据</li>
}
</ul>
</div>
);// return end
}, // render end
}

"vue": "^2.5.2" 发现自带 jsx 模块。。。

把App.vue 改成 App.js 文件

// App.js
export default {
data(){
return {
name: 'ajanuw'
}
}, render(){
return (
<div id="app">
<p>hello {this.name}</p>
</div>
)
}
}
// main.js
import App from './App' => import App from './App.js'

vue使用render渲染&jsx的更多相关文章

  1. Vue之render渲染函数和JSX的应用

    一.模板缺陷 模板的最大特点是扩展难度大,不易扩展.可能会造成逻辑冗余 <Level :type="1">哈哈</Level> <Level :typ ...

  2. Vue.js 2.x render 渲染函数 & JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  3. Render渲染函数和JSX

    1.Render函数:render是用来替换temlate的,需要更灵活的模板的写法的时候,用render. 官网API地址:https://cn.vuejs.org/v2/guide/render- ...

  4. 理解Vue中的Render渲染函数

    理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...

  5. vue render 渲染函数

    vue render 渲染函数 经常看到使用render渲染函数的示例,而且在一些特殊情况下,确实更好使用,可以更加有效地细分组件,因而借助vue-element-admin来学习一波 render函 ...

  6. vue+element ui table组件封装,使用render渲染

    后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...

  7. vue用template还是JSX?

    各自特点 template 模板语法(HTML的扩展) 数据绑定使用Mustache语法(双大括号) <span>{{title}}<span> JSX JavaScript的 ...

  8. Egg + Vue 服务端渲染工程化实现

    在实现 egg + vue 服务端渲染工程化实现之前,我们先来看看前面两篇关于Webpack构建和Egg的文章: 在 Webpack工程化解决方案easywebpack 文章中我们提到了基于 Vue ...

  9. Vue 服务端渲染(SSR)

    什么是服务端渲染? 简单理解是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序. 服务端渲染的优点 更好的SEO,搜索引 ...

随机推荐

  1. 使用log4net将C#日志发送到Elasticsearch

    一.安装Elasticsearch 参考前面写的文章:https://www.cnblogs.com/songxingzhu/p/7909486.html 安装完Elasticsearch后,修改/e ...

  2. PL/SQL学习笔记之函数

    一:函数 函数与过程的最大不同就是,函数有返回值.适用于需要返回结果的场景. 二:创建函数 CREATE [OR REPLACE] FUNCTION function_name [(parameter ...

  3. keras 文本分类 LSTM

    首先,对需要导入的库进行导入,读入数据后,用jieba来进行中文分词 # encoding: utf-8 #载入接下来分析用的库 import pandas as pd import numpy as ...

  4. SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)

    做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...

  5. 并发和多线程-说说面试长提平时少用的volatile

    说到volatile,一些参加过面试的同学对此肯定不陌生. 它是面试官口中的常客,但是平时的编码却很少打照面(起码,我是这样的). 最近的面试,我也经常会问到volatile相关的问题,比如volat ...

  6. Java日志框架(Commons-logging,SLF4j,Log4j,Logback)

    简介 在系统开发中,日志是很重要的一个环节,日志写得好对于我们开发调试,线上问题追踪等都有很大的帮助.但记日志并不是简单的输出信息,需要考虑很多问题,比如日志输出的速度,日志输出对于系统内存,CPU的 ...

  7. JPA+Hibernate 3.3 ——增删改查

    1.     查找对象   1)  用find()方法查找对象 public void getPerson(){ EntityManagerFactory factory = Persistence. ...

  8. [Big Data - Codis] Codis集群的搭建与使用

    一.简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Re ...

  9. Python3实现Win10桌面背景自动切换

    [本文出自天外归云的博客园] 得空写了个自动切换桌面背景图片的小程序.再不写python就要扔键盘了,对vue还有那么一点好感,天天php真是有够烦. 准备工作 准备个文件夹放在桌面上,平时看到什么高 ...

  10. 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态

    实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...