zoukankan      html  css  js  c++  java
  • vue学习:props,scope,slot,ref,is,slot,sync等知识点

    1、ref :为子组件指定一个索引 ID,给元素或者组件注册引用信息。refs是一个对象,包含所有的ref组件。

    <div id="parent">
      <user-profile ref="profile"></user-profile>(子组件)
    </div>

    var parent = new Vue({ el: '#parent' })
    // 访问子组件
    var child = parent.$refs.profile

    ps:$表示refs为vue对象,而不是普通的js对象。

    2、props:父组件向子组件传值(数据),驼峰式改为横线式。

    Vue.component('child', {
    // 声明 props
    props: ['message'],
    // 就像 data 一样,prop 可以用在模板内
    // 同样也可以在 vm 实例中像“this.message”这样使用
    template: '<span>{{ message }}</span>'
    })

    3、scope 作用域

    在父级中,具有特殊属性 scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。scope 的值对应一个临时变量名,此变量接收从子组件中传递的 props 对象:

    <div class="parent">
    <child>
    <template scope="props">
    <span>hello from parent</span>
    <span>{{ props.text }}</span>
    </template>
    </child>
    </div>
     
    4、is 用于动态组件并且给予DOM内模板到限制来工作
     
    动态组件:
    由于table、ul、ol等标签内无法插入自定义标签,只能插入特定标签,所以使用is属性带入。通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换:
    var vm = new Vue({
      el: '#example',
      data: {
        currentView: 'home'
      },
      components: {
        home: { /* ... */ },
        posts: { /* ... */ },
        archive: { /* ... */ }
      }
    })
    <component v-bind:is="currentView">
      <!-- 组件在 vm.currentview 变化时改变! -->
    </component>
    

     my-row是自定义组件

    <table>
      <tr is="my-row"></tr>
    </table>
    

     

     5.slot分发内容
    不具名slot用来备用插入,子组件只有不具名的slot时候,父组件才回调用slot内容,如果子组件有其他内容,父组件的内容会替换掉slot内容,slot内容不显示。
    <div>
      <h2>我是子组件的标题</h2>
      <slot>
        只有在没有要分发的内容时才会显示。
      </slot>
    </div>
    

      

    父组件模版:
    <div>
      <h1>我是父组件的标题</h1>
      <my-component>
        <p>这是一些初始内容</p>
        <p>这是更多的初始内容</p>
      </my-component>
    </div>
    

      

    渲染结果:
    <div>
      <h1>我是父组件的标题</h1>
      <div>
        <h2>我是子组件的标题</h2>
        <p>这是一些初始内容</p>
        <p>这是更多的初始内容</p>
      </div>
    </div>
    

      

    6、sync 字符修饰符
    当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定的值。
    是一个会被扩展为一个自动更新父组件属性的 v-on 侦听器。
    <comp :foo.sync="bar"></comp>会被拓展为:
    <comp :foo="bar" @update:foo="val => bar = val"></comp>
    当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件:this.$emit('update:foo', newValue)
  • 相关阅读:
    adb连接夜神模拟器报错adb server version(36) doesn‘t match this client(41);killing...报错的问题
    python实现九九乘法表正三角和倒三角
    python之json格式的读写
    接口自动化get&post的封装
    2020-7-10-解决windows 10内存占用高问题
    2020-6-29-Python3-day1作业
    2020-6-29-Python3-指定解释器和字符编码
    2020-6-29-Python3-文件的操作
    2020-6-28-Python3-列表的操作
    2020-6-28-Python3-变量的命名规则
  • 原文地址:https://www.cnblogs.com/dontes/p/7170414.html
Copyright © 2011-2022 走看看