just5even 2022-08-23 15:16 采纳率: 33.3%
浏览 37
已结题

Vue中如何通过render直接渲染一个div标签

Vue中如何通过render直接渲染一个div标签
问题相关代码

import Vue from 'vue'
// import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(<div>1231</div>),
}).$mount('#app')
运行结果及报错内容

img

我的解答思路和尝试过的方法

尝试过通过webpack,通过vue-loader, vue-template-compiler 还是不成功,请帮忙看看有什么办法可以解决
感谢感谢

  • 写回答

4条回答 默认 最新

  • just5even 2022-08-25 17:53
    关注

    问题已经解决!
    通过babel-plugin-transform-vue-jsx 插件,对jsx进行转义方可直接访问,同时还需要安装babel-plugin-syntax-jsxbabel-loader,才不会报错!
    创建babel.config.js文件,内容如下

    module.exports = {
      presets: [
        '@vue/cli-plugin-babel/preset'
      ],
      plugins:  ["transform-vue-jsx"], // 这行代码为重点
    }
    

    vue.config.js中创建babel-loader,详情如下

    const { defineConfig } = require('@vue/cli-service')
    module.exports = defineConfig({
      transpileDependencies: true,
      chainWebpack: config => {
        config.module.rule('jsx').test(/\.(jsx?|babel|es6)$/).use('babel-loader').loader('babel-loader');
      }
    })
    
    

    注意:render函数的h参数不可以去掉,不然会直接报错

    所有代码为:
    main.js文件

    import Vue from 'vue'
    // import App from './App.vue'
    
    Vue.config.productionTip = false
    
    new Vue({
      render: (h) => {
        return (<div>1231</div>);
      },
    }).$mount('#app')
    
    

    packge.json文件

    {
      "name": "webpack-vue2",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build",
        "lint": "vue-cli-service lint"
      },
      "dependencies": {
        "core-js": "^3.8.3",
        "vue": "^2.6.14"
      },
      "devDependencies": {
        "@babel/core": "^7.12.16",
        "@babel/eslint-parser": "^7.12.16",
        "@vue/cli-plugin-babel": "~5.0.0",
        "@vue/cli-plugin-eslint": "~5.0.0",
        "@vue/cli-service": "~5.0.0",
        "babel-loader": "^8.2.5",   // 主要是这三行
        "babel-plugin-syntax-jsx": "^6.18.0", // 主要是这三行
        "babel-plugin-transform-vue-jsx": "^3.7.0",  // 主要是这三行
        "eslint": "^7.32.0",
        "eslint-plugin-vue": "^8.0.3",
        "vue-template-compiler": "^2.6.14"
      },
      "eslintConfig": {
        "root": true,
        "env": {
          "node": true
        },
        "extends": [
          "plugin:vue/essential",
          "eslint:recommended"
        ],
        "parserOptions": {
          "parser": "@babel/eslint-parser"
        },
        "rules": {}
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not dead"
      ]
    }
    
    
    

    效果图:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示