Vue中props的用法

props的注意事项

作用:props是用于Vue中父组件子组件传值的时候使用。

  • props的传递是单向的。
  • 不要在子组件改变props的值。
1、props是单项传递

父组件值的会改变子组件的值,子组件的值改变不会影响父组件,如下:

//语法说明
 <div id="app">
     <input type="text" v-model='value'/>
     父组件的值:{{ value }}
     <my-component :value='value'></my-component>
 </div>
//这里注册了一个全局组件
Vue.component('my-component',{
        props:['value'],
        template:`<div>
                       子组件的值:{{ value }}
                       <button @click='clickMe'>修改子组件的值</button>
                   </div>`,
        methods:{
            clickMe(){
                this.value = 123;
            }
        }
 })
//初始化Vue对象
var vm = new Vue({
     el: '#app',
     data:{
            value:'请输入内容'
     }
})
  • 可以看到在输入框我们输入的值,同时子组件的值也改变了。


  • 在我们点击按钮修改props的值时,子组件的值被修改,但父组件的值没有修改,并且控制台报错,要求我们不要尝试修改props的值。

2、不要在子组件改变props的值。

上个例子也看到,直接在子组件改变props的值Vue会报错。因为Vue推荐props适用于两种情况。

  • 总是根据父组件的值进行变化。
  • 作为子组件data属性的初始值。
// 接收父组件的Value值,并将props的值赋予子组件的childValue当初始值。
// 通过改变childValue来实现效果
    Vue.component('my-component',{
        props:['value'],
        template:`<div>子组件的值:{{ childValue }}<br/><button @click='clickMe'>修改子组件的值</button></div>`,
        data(){
            return{
                childValue: this.value
            }
        },
        methods:{
            clickMe(){
                this.childValue = 123;
            }
        }
    })

3.注意

值得注意的是,当我在想通过输入框来改变props的值,childValue的值并没有跟着修改,符合初始值的定义。推测,可能 childvalue:this.value 采用的是值传递。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容