• vue2中render函数学习思维导图


     vue2之render+jsx从细节入手,彻底掌握

    父组件 .vue 

    1. <template>
    2. <div>
    3. <myCom :msg="msg" :data-list="dataList" @on-change="comChange" />
    4. div>
    5. template>
    6. <script>
    7. import myCom from './renderTest/myCom.js'
    8. export default {
    9. components: {
    10. myCom
    11. },
    12. data() {
    13. return {
    14. msg: '我是来自父组件的信息',
    15. dataList: [
    16. {
    17. name: 'Json Brown',
    18. age: '12',
    19. address: 'asasasss',
    20. date: '2023-12-12'
    21. },
    22. {
    23. name: 'Json Brown',
    24. age: '12',
    25. address: 'asasasss',
    26. date: '2023-12-12'
    27. }
    28. ]
    29. }
    30. },
    31. created() {
    32. },
    33. mounted() {
    34. console.log(12)
    35. },
    36. methods: {
    37. comChange(val) {
    38. console.log('as', val)
    39. }
    40. }
    41. }
    42. script>

    render.js 

    1. import './style.scss' // 单独针对这个组件的样式
    2. const ListItem = {
    3. name: 'ListItem',
    4. props: {
    5. personList: Array
    6. },
    7. data() {
    8. return {
    9. userInfo: {
    10. name: '诸葛亮',
    11. age: '1000'
    12. }
    13. }
    14. },
    15. render(h) {
    16. const { personList, userInfo } = this
    17. return (
    18. <div>
    19. <ul class='list-view'>
    20. {
    21. personList.map((mp, index) => {
    22. return (
    23. <li class='li'>
    24. <p class='tag-sort-view'>{index + 1}p>
    25. <p>姓名:{mp.name}p>
    26. <p>年龄:{mp.age}p>
    27. li>
    28. )
    29. })
    30. }
    31. ul>
    32. {
    33. this.$scopedSlots.header({ userInfo })
    34. }
    35. div>
    36. )
    37. }
    38. }
    39. const SlotContent = {
    40. props: {
    41. userInfo: Object
    42. },
    43. render(h) {
    44. const { userInfo } = this
    45. console.log(userInfo)
    46. return (
    47. <div>
    48. <div>这是插槽的div>
    49. { userInfo.name}
    50. { userInfo.age}
    51. div>
    52. )
    53. }
    54. }
    55. export default {
    56. name: 'myCom',
    57. props: {
    58. msg: String,
    59. dataList: Array
    60. },
    61. data() {
    62. return {
    63. }
    64. },
    65. methods: {
    66. handleClick(event, info) {
    67. console.log(event, 12)
    68. console.log(info)
    69. this.$emit('on-change', info)
    70. }
    71. },
    72. render(h) {
    73. /**
    74. * 解构之后,可以不用 this.
    75. * const { msg, handleClick } = this
    76. */
    77. const sSlots = {
    78. header: (props) => <SlotContent userInfo={ props.userInfo }>SlotContent>
    79. }
    80. return (// 只能有一个根元素
    81. <div>
    82. <p onClick={ ($event) => this.handleClick($event, 'info') } class='bg' style={{ color: '#10ac84', margin: '20px', padding: '20px' }}>
    83. 我是嘿嘿
    84. p>
    85. <h2 onClick={ this.handleClick }>
    86. {this.msg}
    87. h2>
    88. <ListItem personList={ this.dataList } scopedSlots={sSlots}>ListItem>
    89. div>
    90. )
    91. }
    92. }

     

  • 相关阅读:
    Nginx高可用 - Keepalived安装部署
    yarn 设置淘宝镜像配置
    牡丹
    电源小白入门学习10——浪涌、防浪涌器件、浪涌保护芯片
    ES5.6.4安装elasticdump实现备份
    GRU 浅析
    acwing算法基础之搜索与图论--染色法判断二分图
    EOS将发布的官方EVM怎么样?
    基于深度学习的监控场景下是否佩戴安全帽检测(yolov5)
    k8s集群开启临时容器配置
  • 原文地址:https://blog.csdn.net/qq_37899792/article/details/133806172