iview render函数常用总结(vue render函数)

今天药忘吃喽~ 2021-09-19 00:30 623阅读 0赞

iview 的render函数就是vue的render函数
iview常用在表格里面自定义内容

render函数常用的配置

h就是createdElement的简写
3个参数如下:

  1. h("元素名称或组件名称", {
  2. domProps: { // 原生dom元素的一些属性
  3. value: 1,
  4. type: 'number',
  5. min: 1
  6. innerHTML:’‘
  7. },
  8. props:{ // 传给组件数据 比喻iview Button的type,size 等等
  9. type:'text',
  10. size:'small'
  11. },
  12. class:{ // 类
  13. btn:true//
  14. },
  15. attrs:{ // html属性,class
  16. id:'box'
  17. class:'brn2'
  18. },
  19. style:{ // 内联样式
  20. },
  21. slot:'slotName', // 组件的插槽
  22. on:{ // 事件 包括组件的自定义事件
  23. click:()=>{
  24. },
  25. 'on-change':()=>{
  26. },
  27. },
  28. nativeOn:{ // 类似vue的.native修饰符,自定义组件常用
  29. click:()=>{
  30. }
  31. }
  32. }
  33. ,'文本啊啊啊'
  34. )

h的第二个参数支持数组的形式,数组里面可以是多个h渲染出来的元素对象或字符串

eg:
1,渲染多个组件

  1. {
  2. title: '操作',
  3. width: 150,
  4. render: (h, { row, index }) => {
  5. let btn = h('i-switch', {
  6. props: {
  7. value: row.join_status === 1 ? true : false,
  8. size: 'large',
  9. loading: row.loading
  10. },
  11. on: {
  12. 'on-change': (val) => {
  13. this.tabData[index].loading = true
  14. if (!val) {
  15. this.$Modal.confirm({
  16. title: '你确定要禁用该加盟商吗?',
  17. content: '<p>禁用将会导致该加盟商下所有人员无法登陆CRM系统</p>',
  18. onOk: () => {
  19. this.changeChannelStatus(row.id)
  20. },
  21. onCancel: () => {
  22. this.tabData[index].loading = false
  23. }
  24. });
  25. return
  26. }
  27. this.changeChannelStatus(row.id)
  28. }
  29. }
  30. }, [
  31. h('span', {
  32. slot: 'open',
  33. domProps: {
  34. innerHTML: 'ON'
  35. }
  36. }),
  37. h('span', {
  38. slot: 'close',
  39. domProps: {
  40. innerHTML: 'OFF'
  41. }
  42. })
  43. ]
  44. )
  45. let edit = h('a', {
  46. style: {
  47. 'margin-right': '15px',
  48. },
  49. on: {
  50. click: () => {
  51. this.$router.push({ name: 'addJoiner', query: { ...row, tit: '编辑加盟商' } })
  52. }
  53. }
  54. }, '编辑')
  55. return h('div', [edit, btn])
  56. }

效果图:
在这里插入图片描述
switch 异步时loading状态
在这里插入图片描述
2,渲染自定义组件

  1. {
  2. title: '状态',
  3. render: (h, { row }) => {
  4. return h(myTag, {
  5. props: {
  6. color: row.join_status === 1 ? '#52C41A' : 'red'
  7. },
  8. class: {
  9. 'hahah': true
  10. },
  11. nativeOn: { //事件
  12. click: () => {
  13. alert(1)
  14. }
  15. }
  16. }, row.join_status === 1 ? '正常' : '解约')
  17. }
  18. },

在这里插入图片描述

值得注意的是配置的参数vlaue支持变量。

怎么绑定v-model?

这个问题vue官方说了:是没法绑定的,只能自己实现

实现也不难

eg:

  1. {
  2. title: '价格',
  3. key: 'name',
  4. render: (h, { row, index }) => {
  5. let input = h('input', {
  6. domProps: {
  7. value: row.price,
  8. type: 'number',
  9. min: 1
  10. },
  11. style: {
  12. width: '200px',
  13. display: 'inline-block',
  14. height: '32px',
  15. 'line-height': 1.5,
  16. },
  17. on: {
  18. change: (event) => { // 实现绑定数据
  19. let val = event.target.value
  20. this.tabData[index].price = val
  21. }
  22. }
  23. })
  24. let arr = [input]
  25. let tip = h('span', {
  26. style: {
  27. color: 'red',
  28. marginLeft: '10px'
  29. }
  30. }, '必填,最多保留两位小数')
  31. if (row.tip) {
  32. arr.push(tip)
  33. }
  34. return h('div', arr)
  35. }
  36. }

发表评论

表情:
评论列表 (有 0 条评论,623人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vuerender函数

    回忆Vue的一些基本概念 今天我们学习的目的是了解和学习Vue的`render`函数。如果想要更好的学习Vue的`render`函数相关的知识,我们有必要重温一下Vue中