let data =params.row.tags;

                    let _this = this

                      return h('div', data.map( (item)=>{

                        return h('div', {

                            style: {

                                // padding: '5px 0',

                                // lineHeight: '24px',

                            }

                        },[

                            h('a',{

                                style:{

                                    display: 'inline-block',

                                    padding: '5px 0',

                                    lineHeight: '24px',

                                    fontSize: '12px',

                                },

                                on:{

                                    click: () => {

                                        let href = window.location.href

                                        let host = href.split('?')[0]

                                        window.location.href = host + '?tagstring=' + item

                                        window.location.reload()

                                    }

                                }

                                }, item ),

                            h('Poptip', {

                                    props: {

                                    trigger:"hover",

                                    placement: 'top',

                                    // 注意一定要添加该属性,否则表格会遮盖住气泡浮框

                                    transfer: true,

                                    content: '复制',

                                    // width: '20px',

                                    }

                                },

                                [  

                                    h('Icon', {

                                        class: 'ivu-icon ivu-icon-ios-copy-outline copyBtn1',

                                        style: {

                                            marginleft: '15px',

                                            cursor: 'pointer'

                                        },

                                        props: {

                                            type:"ios-copy-outline"

                                        },

                                            on: {

                                            click: () => {

                                                console.log(99999)

                                                //头部copy文本方法

                                                let Clipboard = this.base.Clipboard; //调用公共复制文本方法

                                                var clipboard = new Clipboard('.copyBtn1' , {

                                                        text: function() {

                                                            clipboard.destroy();

                                                            return item;

                                                        }

                                                    });

                                                clipboard.on('success', function(e) {

                                                    e.clearSelection();

                                                    _this.$Message.success('复制成功~');

                                                });

                                                clipboard.on('error', (e)=>{

                                                    clipboard.destroy();

                                                    _this.$Message.error('复制失败,请手动复制~')

                                                });

                                            }

                                        }

                                    })

                                ]

                            )]

                        )

                    }),

                )}

            },

            {

                title: '操作',

                key: 'action',

                width: 150,

                align: 'center',

                render: (h, params) => {

                    return h('div', [

                        h('Button', {

                            props: {

                                type: 'success',

                                size: 'small'

                            },

                            style: {

                                marginRight: '5px'

                            },

                            on: {

                                click: () => {

                                    if(this.popup){ //第一个弹框是打开状态的时候什么也不做

                                        return;

                                    }

                                    //this.clickBindIP( params.row , params.index ); //传递给点击绑定事件

                                    let data = params.row;

                                    this.rename.isLayer = true;

                                    this.rename.lodVal = data.hostname;

                                    this.rename.id = data.id;

                                    this.rename.head = data.loc+'-' //新名字的头

                                    this.rename.tail = '.'+data.idc //新名字的尾部

                                }

                            }

                        }, '改名'),

                        h('Button', {

                            props: {

                                type: 'error',

                                size: 'small'

                            },

                            on: {

                                click: () => {

                                    //this.removeBindIP(params.row , params.index)

                                    this.$Message.info('您点击了重启按钮')

                                }

                            }

                        }, '重启')

                    ]);

                }

            }

        ],

[](

)2.render函数返回节点格式

-----------------------------------------------------------------------------------

iview表格的render函数作用是自定义渲染当前列,权限高于key,所以使用了render函数,那么表格的key值就无效了。render函数传入两个参数,第一个是 h,第二个是对象,包含 row、column 和 index,分别指当前单元格数据,当前列数据,当前是第几行。

具体用法:

render:(h,params) => {

return h(" 定义的元素 ",{ 元素的性质 },"元素的内容"/[元素的内容])

}


### [](

)1.返回单文本

如果是可以直接用的数据字段,直接把字段赋值给key值就可以了

{

title: '机器IP',

key: 'ip',

width:150,

align: 'center',

},


#### [](

)2.返回自定义文本

使用return h函数返回
    {

                title: '机器名称',

                key: 'hostname',

                width: 200,

                render: (h, params) => {

                    let data =params.row;

                    let url = '';

                    if(data.idc === 'uclcn' || data.idc === 'alicn' || data.idc === 'tencn') {

                        url = `http://${data.hostname}:1988`

                    } else {

                        url = `http://${data.ip}:1988`

                    }

                    // 如果不做以上操作可直接使用return h函数返回

                    return h('a',  // 元素名称

                        {

                            domProps:{

                                 href: url,

                                 target:'_blank'

                            }// 为元素赋属性

                            style: {

                                fontSize: '14px'

                            }// 为元素写样式,驼峰书写格式,值加“”

                        }, // 元素性质

                          on: {

                                click: () => {}

                          }, // 元素事件

                        data.hostname // 元素内容

                    )

                }

            },

### [](

)3.返回html元素/多元素/嵌套元素

在单元格还要循环元素的话就在render h里使用map函数返回,然后内层再使用一个render h 函数返回循环内容。

返回html元素/多元素/嵌套元素时要记得在节点外加“/[ /]”,不加的话渲染不出来,但也不会报错,“/[ /]”中使用h函数逐层返回,不用再加’return’,格式同return h 函数

##### [](

)格式:

h(" 定义的元素 ",{ 元素的性质 },"元素的内容"/[元素的内容])

render: (h, params) => {

return h('a', [

    h('a',[

        h('Icon', {

        })

    ])

])

})


##### [](

)例:

{

                title: '节点',

                key: 'tags',

                minWidth:450,

                render: (h, params) => {

                    let data =params.row.tags;

                    let _this = this

                      return h('div', data.map( (item)=>{

                        return h('div', { // 单元格中再渲染循环肉

                            style: {

                                // padding: '5px 0',

                                // lineHeight: '24px',

                            }

                        },[ //此处"[]"是必须的

                            h('a',{

                                style:{

                                    display: 'inline-block',

                                    padding: '5px 0',

                                    lineHeight: '24px',

                                    fontSize: '12px',

                                },

                                on:{

                                    click: () => {

                                        let href = window.location.href

                                        let host = href.split('?')[0]

                                        window.location.href = host + '?tagstring=' + item

最后

在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理

iview使用render函数渲染嵌套表格,html的介绍及常用标签

iview使用render函数渲染嵌套表格,html的介绍及常用标签