• vue组件之间的通信


    props-父组件向子组件传输数据,兄弟组件不能通信。

     

     

     

    <template>
      <div id="app">
          <HelloWorld   :persion="persion" :logPersion='logPersion'/>
      </div>
    
    </template>
    
    <script>
    import HelloWorld from './components/HelloWorld.vue'
    
    export default {
      name: 'App',
      data(){
        return {
            persion:{
              name:"张三",
              age:600,
            },
        }
      },
      components: {
        HelloWorld
      },
      methods: {
        logPersion(name,age){
          alert(`姓名:${name} 年龄:${age}`);
        },
      }
    }
    </script>
    
    <style>
    /* #app {
      font-family: Avenir, Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
      margin-top: 60px;
    } */
    </style>
    

      

    <template>
    <div>
       <h1>props实现通信</h1>
       <!-- 父组件往子组件传数据通过props,子往父传通过方法 -->
    <div>
      <h4>姓名:{{name}}</h4>
        <h4>年龄:{{age}}</h4>
        <h4>人-name:{{persion.name}}</h4>
        <h4>人-age{{persion.age}}</h4>
    <button @click="logPersion('大李子',23)">点我试试</button>
    </div>
    
    </div>
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      //第一种
      //props:['name','age'],
      //第二种
      // props: {
      //   name: String,
      //   age: Number,
      //   persion:Object,
      //   logPersion:Function,
      // },
      //第三种:required:true 不传name,虽然页面报错但是数据没影响,严谨。
        props: {
        name:{type:String,required:true,default:'聊客'},
        age: {type:Number,required:true,default:'13'},
        persion:Object,
        logPersion:Function,
      },
    }
    </script>
    
    <style scoped>
    
    </style>
    

      

    <template>
      <div id="app">
    <HelloWorld @btnClick='deleteP'/>
    <p ref="word" class="word"> 我是要被删除的标签</p>
    
      </div>
    </template>
    
    <script>
    import HelloWorld from './components/HelloWorld.vue'
    
    export default {
      name: 'App',
      components: {
        HelloWorld
      },methods: {
        
        deleteP(args){
          console.log(args);
         this.$refs.word.remove();
        }
      }
    }
    </script>
    
    <style>
    .word{
       200px;
      height: 200px;
      background-color: #fff;
      color: red;
    display: flex;
    justify-content: center;
    align-content: center;
    
    }
    </style>
    

      

    <template>
    <div>
      <button @click="btnClick">删除父组件</button>
    </div>
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      props: {
      },
      methods: {
        btnClick(){
         // 告诉父组件点击了按钮
         this.$emit('btnClick',{name:'张三',age:23});
        },
      }
    }
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style scoped>
    
    </style>
    

      

  • 相关阅读:
    程序设计课程技巧小总结
    《大学之路》读后感(1)
    《世界是数字的》读后感(4)
    《世界是数字的》读后感(3)
    《世界是数字的》读后感(2)
    《世界是数字的》读后感(1)——第一部分 硬件
    独立思考的能力——《不要等到毕业以后》读后感(2)
    迷茫且鉴定——《不要等到毕业以后》读后感(1)
    HashTable HashMap区分
    使用media query 来实现响应式设计
  • 原文地址:https://www.cnblogs.com/q1359720840/p/13919478.html
Copyright © 2020-2023  润新知