请问这种数组类型的prop,是不是default都要写成函数形式呢?

请问这种数组类型的prop,是不是default都要写成函数形式呢?

就是用sliders传进来的data,在props中定义的时候default要写成data(){return []} 是不是以后凡是数组 对象类型的都要这么写呢?非常感谢!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

vue中,在父组件通过props传数组或对象类型值给子组件的时候,数组或对象的默认值应当由一个工厂函数返回,所以default是用函数表示。

例如数组我们要写成

proE: {
   type: Array,
   default(){
     return []
   }
}

对象我们要写成:

propE: {
  type: Object,
  default(){
    return {}
  }
}

希望可以帮到你!

  • hpbrave 提问者 #1
    好的 非常感谢!
    2018-12-17 11:22:59
卡布琦诺 2018-12-16 10:42:47

关于同学的问题,首先我们需要了解的是在vue中,data有三种写法:

第一种写法:

<script type="text/javascript">
    var app=new Vue({
        el:'#app',
        data:{
            ……
        }
    })
</script>

第二种写法:

<script type="text/javascript">
    var app=new Vue({
        el:'#app',
        data: function(){
            return {
                ……
            }
        }
    })
</script>

第三种写法:

<script type="text/javascript">
    var app=new Vue({
        el:'#app',
        data() {
            return {
                ……
            }
        }
    })
</script>

这里的第三种是第二种的ES6写法

区别:

1、在简单的Vue实例中,没什么区别,因为app对象不会被复用

var app = new Vue({...})

2、在组件中,因为可能在多处调用同一组件,所以为了不让多处的组件共享同一data对象,只能返回函数,因此就需要使用如下方式:

export default{
    data(){
            return { 
                ...
        }
    }
}

因此,这里不是因为是数组才这么写的,而是为了避免不让多处的组件共享同一data对象,只能返回函数。

希望可以帮到你!

  • 提问者 hpbrave #1
    谢谢回复,不过好像我没有说明白问题。这个data不是组件中固定的代表数据项的data,而是一个自定义的data变量,由slider.vue中的父组件<me-slider :data="sliders">传给子组件。子组件在接收的时候就定义在props里,data: { type: Array, default(){ return []; } }。这个地方的default值定义为函数形式,肯定也是为了组件复用时,互不影响,但是props里还有接收的其他的参数啊,他们没有互相影响的问题么?就是不太明白,为什么单单这个变量的default值是用函数表示的。非常感谢!
    2018-12-16 19:07:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师