鍍金池/ 問(wèn)答/HTML/ 求教vue2怎么用createElement動(dòng)態(tài)創(chuàng)建DOM

求教vue2怎么用createElement動(dòng)態(tài)創(chuàng)建DOM

有一個(gè)按鈕,根據(jù) status 的值來(lái)創(chuàng)建,比如 status = 1 ,按鈕名為 status1,跳轉(zhuǎn) A 頁(yè)面
我想通過(guò) createElemetn 來(lái)創(chuàng)建這個(gè)按鈕

<template>
<div class="btn">...</div>
</template>
<script>
    export default{
        render:(createElement){
          return createElement(...按鈕)  
        }
    }
</script>

我看了官網(wǎng)的介紹,好像是這樣寫(xiě),但是試了下沒(méi)有用,不知道怎么玩了...

回答
編輯回答
別瞎鬧

<template>

<order-btn :status="status"></order-btn>

</template>

<script>

import Vue from 'vue'
Vue.component('order-btn', {
  render:function(createElement){
      let self = this
        return createElement(
            'div',
            {
                on:{click:function(){
                    console.log('success')
                }},
            },
            self.order2Operate(self.status)
            )
    },
    props:{
        status
    },
    methods:{
        order2Operate(status){
            switch(status){
                case 1:
                    return "待付款"
                    break;
                case 2:
                    return "待成團(tuán)"
                    break;
                case 3:
                    return "待發(fā)貨"
                    break;
                case 4:
                    return "待收貨"
                    break;
                case 5:
                    return "待評(píng)價(jià)"
                    break;
                default:
                    return "***"
            }
        }
    }
})

export default{
    data(){
        return{
            statue:[1,2,3,4,5]
        } 
    }
}

</script>

2018年3月20日 18:29
編輯回答
枕頭人

let message = new Vue.extend(require('./main.vue'));
document.body.appendChild(instance.vm.$el);

這樣可以把vue的組件dom插入到body

2017年12月4日 20:08
編輯回答
祉小皓

你這個(gè)其實(shí)可以這樣想,你需要一個(gè)父組件

parent--->傳遞status的數(shù)值---->子組件
子組件的props,接收父組件傳遞過(guò)來(lái)的status數(shù)值
然后類(lèi)似于這樣來(lái)創(chuàng)建一個(gè)按鈕

 props: {
            status: { type: Number }
        },
        render: function (h) {
            const _this = this
            return h('div', {
                on: {
                    'click': function (event) {
                        this.$router.push('頁(yè)面地址')
                    },
                }
            }, _this.status)
        }
2017年6月5日 08:17
編輯回答
冷溫柔

最好別這樣搞,會(huì)影響重新渲染性能。

最好用v-if或v-show來(lái)控制這個(gè)按鈕的顯隱

2018年5月24日 11:42