V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imherer
V2EX  ›  程序员

请教前端大佬一个 Vue.js 问题

  •  
  •   imherer · 2023-07-13 15:07:36 +08:00 · 1453 次点击
    这是一个创建于 533 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不会前端,最近用现成的框架改点东西,我想通过 h 动态渲染一些 html 标签应该如何实现

     return h(
         <div>
             <h1 style="font-size:30px">1</h1>
             <h1 style="font-size:30px">2</h1>
             <h1 style="font-size:30px">3</h1>
         </div>
         )
    

    例如上面的代码,div 里面的 h1 标签数量不确定,是通过一个数组来决定的,类似于这样

    const arrList = [1, 2, 3]
        
    <div v-for="item in arrList">
        <h1 style="font-size:30px">{item}</h1>
    </div>
          
    

    这个应该怎么写呢

    10 条回复    2023-07-13 16:34:47 +08:00
    chensuiyi
        1
    chensuiyi  
       2023-07-13 15:09:15 +08:00
    如果可以,能不能不用 h 函数实现呢。。
    shakukansp
        2
    shakukansp  
       2023-07-13 15:11:46 +08:00   ❤️ 1
    h('div', arrList.map( i => h('h1', { style:'font-size:30px' }, [i]) ))
    imherer
        3
    imherer  
    OP
       2023-07-13 15:12:37 +08:00
    @chensuiyi emmm ,谢谢你提醒,我好像知道怎么做了。我试试
    imherer
        4
    imherer  
    OP
       2023-07-13 15:13:36 +08:00
    @shakukansp 感谢大佬,这个是可行的
    lianyue
        5
    lianyue  
       2023-07-13 15:16:07 +08:00   ❤️ 1
    ```html
    <template>
    <AppBar></AppBar>
    </template>
    <script setup lang="ts">
    const arrList = [1, 2, 3]

    let children = []
    for (let i = 0; i < arrList.length; i++) {
    const item = arrList[i];
    children.push(h('h1', { style: 'font-size:30px' }, String(item)))

    }
    const AppBar = h('div', {class:'h-div'}, children)
    </script>
    ```
    xinfushuo123
        6
    xinfushuo123  
       2023-07-13 15:26:02 +08:00
    如果可以用 jsx 的话 试试 v-for
    Laobai
        7
    Laobai  
       2023-07-13 15:35:41 +08:00
    v-for 直接写在 h1 标签上就行了吧,对了记得加 key
    anonydmer
        8
    anonydmer  
       2023-07-13 16:10:28 +08:00
    虽然技术上没有问题,但是从语义上来说不应该包含多个 h1 吧
    waiaan
        9
    waiaan  
       2023-07-13 16:29:24 +08:00
    vue 不是支持 jsx 语法吗?
    Yukiteru
        10
    Yukiteru  
       2023-07-13 16:34:47 +08:00   ❤️ 1
    这个没必要用渲染函数,是基础中的基础,直接 v-for 循环渲染就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1120 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.