render函數---使用在iview的Table以及Tree中


1、render基礎

render: function(createElement){//參數createElement又帶有自己的參數,用來告訴Vue頁面上需要渲染什么樣的節點
  return createElement('div',//第一項參數是模板的標簽渲染,即渲染成哪一種標簽
  {//第二項參數是給渲染的標簽的配置,如屬性、樣式、事件
    props:{},//標簽屬性
    style:{},//標簽樣式
    on: {//標簽事件
      click: () => {}
    }
  },'標簽內容')//第三項參數是渲染的標簽中的文本內容;
}

以上是我項目中實際的使用過的參數,想更具體的可以看vue官方文檔(https://cn.vuejs.org/v2/guide/render-function.html,現只領悟到這些);還可以插入多個標簽,先最外面套有一個父標簽,在父標簽里在插入多個標簽;

render: function(createElement){
  return createElement(
    'h2',[//h2第一層標簽
      createElement('a',{//a是第二層標簽
        attrs: {//這是a的屬性
          name: 'headingId',
          href: '#'
        }
      },'標簽內容')
  ])
}

若要嵌套多個標簽寫createElement很繁瑣,其等價寫法:

render: (h,params) => {//h相當於createElement
  h('h2',[
    h('a',{
      props:{
         name: 'headingId',
         href: '#'
      },
      style:{},
      on:{
         click:()=>{}
      }
    },'標簽內容')
  ])
}

2、iview的Table表格

在columns里面配置,render:(h,params){},params包含了rows、columns、index信息;綁定事件必須使用箭頭函數。現在iview的Table支持slot插入標簽了,即在columns里配置時為

columns:[
  {
     title: '',
     slot: 'handle'
  }
]
//渲染的時候
<Table :columns="columns" :data="datas">
    <template slot="handle' slot-scope="{row,index,column}">
      <button>按鈕</button>
   </template>
</Table>

3、Tree樹形結構

是在datas里配置,我是需要不使用它自帶的選擇框,而是在文本后面顯示一個單選框來進行選擇,所以就用了render函數來插入單選。

<template>
  <Modal title="分類設置">
    <Tree :data="datas"></Tree>
  </Modal>
</template>

<script>
export default {
    name: 'ClassifyPop',
    data(){
        return {
            datas:[
                {
                    title: '干雜',
                    children: [
                        {
                            title: '辣椒',
                            render: (h,params) => {
                                return h('span',[
                                    h('span',{
                                        style:{
                                            marginRight: '10px'
                                        }
                                    },params.data.title),
                                    h('Checkbox',{
                                        props:{
                                            name: 'classify'
                                        }
                                    })
                                ])
                            }
                        }
                    ]
                },
                {
                    title: '調味品',
                    children: [
                        {
                            title: '鹽',
                            render: (h,params) => {
                                return h('span',[
                                    h('span',{
                                        style:{
                                            marginRight: '10px'
                                        }
                                    },params.data.title),
                                    h('Checkbox',{
                                        props:{
                                            name: 'classify'
                                        }
                                    })
                                ])
                            }
                        }
                    ]
                }
            ]
        }
    },
}
</script>

效果是這樣的:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM