Vue2.0 render:h => h(App)是什么意思,为什么不加这段没效果?

使用vue-router2.0,为什么有一段Vue2.0 render:h => h(App),不加这个,页面是空白的?这段是什么用的?
App.vue
mian.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
import VueRouter from "vue-router";
import App from './App';
import flex from "components/flex/flexDice";
import animate from "components/animate/animation";
import css3d from "components/3d/css3d";
import 'commons/index.scss';
// 安装vue-router插件
Vue.use(VueRouter);
// 创建一个子类app
// let app=Vue.extend(App);

const router=new VueRouter({
    linkActiveClass: "active",
    routes:[
        {path:'/flex',component:flex},
        {path:'/anmiation',component:animate},
        {path:'/3D',component:css3d}
    ]
});

const app=new Vue({
    el:'#app',
    router,
    render:h => h(App)//为什么这段不加 没有效果?
});
// 打开的默认路径
router.push('/flex');
阅读 15.1k
5 个回答

首先需要了解这是 es 6 的语法,表示 Vue 实例选项对象的 render 方法作为一个函数,接受传入的参数 h 函数,返回 h(App) 的函数调用结果。

其次,Vue 在创建 Vue 实例时,通过调用 render 方法来渲染实例的 DOM 树。

最后,Vue 在调用 render 方法时,会传入一个 createElement 函数作为参数,也就是这里的 h 的实参是 createElement 函数,然后 createElement 会以 APP 为参数进行调用,关于 createElement 函数的参数说明参见:Element-Arguments

谢邀!
render函数是渲染一个视图,然后提供给el挂载,如果你没有加那么就等于没有视图给el挂载,自然什么都没有了。
另外

{
    render: h => h(App)
}

等价于

{
    render: h => {
        return h(App)
    }
}

其实只是简写的方式。
如果不涉及使用this的话下面这个也是等价的

{
    render: function (h) {
        return h(App)
    }
}

http://cn.vuejs.org/v2/guide/...

render 是vue里面实现渲染dom的函数,这句的目的是渲染这个app实例。用App这个模板。
下面这个写法是一个意思

const app=new Vue({
    el:'#app',
    router,
    compoments:{
        App
    },
    template:"<App/>"
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题