2-4 vue props数据一定是单向的

props数据一定是单向的

  • <strong>prop默认是单向绑定</strong>

  • 当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态。

  • 案例验证:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title></title>
</head>
<body>
   <div id="app">
       <table>
           <tr>
               <th colspan="3">父组件</th>
           </tr>
           <tr>
               <td>国家</td>
               <td>{{country}}</td>
               <td><input type="text" v-model="country"></td>
           </tr>
           <tr>
               <td>地区</td>
               <td>{{area}}</td>
               <td><input type="text" v-model="area"></td>
           </tr>
       </table>
       <br>
       <my-child :child-country="country" :child-area="area"></my-child>
   </div>
   <template id="child">
       <table>
           <tr>
               <th colspan="3">子组件</th>
           </tr>
           <tr>
               <td>国家</td>
               <td>{{ childCountry }}</td>
               <td><input type="text" v-model="childCountry"></td>
           </tr>
           <tr>
               <td>地区</td>
               <td>{{ childArea }}</td>
               <td><input type="text" v-model="childArea"></td>
           </tr>
       </table>
   </template>
<script src="js/vue.js"></script>
<script>
   new Vue({
       el: '#app',
       data:{
           country: '中国',
           area: '亚洲'
       },
       components:{
           'my-child': {
               template: '#child',
               props: [ "childCountry", "childArea"]
           }
       }
   })
</script>
</body>
</html>
  • 运行结果:
vueb5.png
  • 结论

在vuejs2.0中,任何试图在组件内修改通过props传入的父组件数据都被认为是anti-pattern的。


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

推荐阅读更多精彩内容