vue自学入门-6(vue jsx)

vue

目录:

vue自学入门-1(Windows下搭建vue环境)

vue自学入门-2(vue创建项目)

vue自学入门-3(vue第一个例子)

vue自学入门-4(vue slot)

vue自学入门-5(vuex state)

vue自学入门-6(vue jsx)

vue自学入门-7(vue style scope)  

vue自学入门-8(vue slot-scope)

vue组件视图可以通过模板,也可以通过jsx方式

1、删除HelloWorld<template>内容

-----------------方式1---------------------

2、export default中增加render

 3、运行

4、点击事件和react的jsx写法很像

export default {

name: 'HelloWorld',

methods: { add () {

// this.$store.state.count += 1

this.$store.commit('add1')

}},

render () {

return (

<div class="hello">

<div onClick={() => this.add()}>点我增加1</div>

</div>

)

},

data () {

return {

msg: 'Welcome to Your Vue.js App'

}

}

}

5、运行正常

-----------------方式2---------------------

 6、再换一种写法使用createElement

createElement可以简写为h,或者其它字符比如

7、增加点击事件

 render (h) {

return h('div', {

on: {click: () => {

console.log('click')

this.add()

}}

}, '点我增加1')

},

 8、进一步改写代码

render: h => h(App) 含义

render: function (createElement) {

return createElement(App);

}

render (createElement) {

return createElement(App);

}

render (h){

return h(App);

}

按上面的写法,将render改写为

 render: h => h('div', {

on: {click: () => {

console.log(this)

this.add()

}}

}, '点我增加1'),

发现并不能正确add,提示

打印this,下面这个this为

正确的写法this为

 为什么出现这种问题没有想明白,有熟悉的朋友请解答一下,正常,异常代码分别如下

render (h) {

return h('div', {

on: {click: () => {

console.log(this)

this.add()

}}

}, '点我增加1')

}

render: h => h('div', {

on: {click: () => {

console.log(this)

this.add()

}}

}, '点我增加1')

 如果想处理这个问题可以这样写,增加_this

<script>

var _this = {}

export default {

name: 'HelloWorld',

methods: { add () {

// this.$store.state.count += 1

this.$store.commit('add1')

}},

beforeCreate () {

_this = this

},

render: h => h('div', {

on: {click: () => {

console.log(_this)

_this.add()

}}

}, '点我增加1'),

data () {

return {

msg: 'Welcome to Your Vue.js App'

}

}

}

</script>

以上是 vue自学入门-6(vue jsx) 的全部内容, 来源链接: utcz.com/z/380322.html

回到顶部