• Vue3 特殊属性:key,ref,is


    Vue3 特殊属性:key,ref,is

    参考文档:https://v3.vuejs.org/api/special-attributes.html

    vue3 特殊属性:

    • key
    • ref
    • is

    key

    期望值:number | string

    特殊属性key主要用于提示Vue的虚拟DOM算法在区分新节点列表和旧节点列表时识别VNodes。没有key的时候,Vue使用一种算法来最小化元素移动,并尽可能就地修补/重用相同类型的元素。使用key,它将根据键的顺序变化对元素重新排序,而key不再存在的元素将总是被删除/销毁。

    同一公共父元素的子元素必须具有唯一的key,重复的key会导致渲染错误。

    最常用的使用示例是和v-for一起使用。

    <ul>
        <li v-for="item in items" :key="item.id">...</li>
    </ul>

    它还可以用于强制替换元素/组件,而不是重用它。当你想要的时候,这很有用:

    • 恰当地触发组件的生命周期钩子
    • 触发transitions

    示例:

    <transition>
        <span :key="text">{{ text }}</span>
    </transition>

    当text改变,span将始终被替换,而不是修补,因此将触发transition

    ref

    期望值:string | Function

    ref用于注册对元素或子元素的引用。引用将注册在父组件的$refs对象下。如果在普通DOM元素上使用,引用将是该元素,如果在子组件上使用,引用将是组件实例

    <!-- vm.$refs.p 就是这个DOM节点 -->
    <p ref="p">hello</p>
    
    <!-- vm.$refs.child 就是child-component这个组件实例 -->
    <child-component ref="child"></child-component>
    
    <!-- 当动态绑定,我们可以将ref定义为一个回调函数,显示地传递元素或组件实例 -->
    <child-component :ref="(el) => child = el"></child-component>

    关于ref注册时间的一个重要提示:

    因为ref本身是由render函数创建的,所以你不能在初始渲染时访问它们——它们还不存在!

    $refs也是非响应式的,因此不应该尝试在数据绑定模板中使用它。

    refs相关补充:

    Template refs

    尽管存在props和events,但有时您可能仍然需要在JavaScript中直接访问子组件,要实现这一点,可以使用ref属性作为子组件或HTML元素分配一个引用ID

    <input ref="input" />

    当你想以编程方式将这个输入焦点放到组件挂载上,这可能是有用的。

    const app = Vue.createApp({})
    
    app.component('base-input', {
        template: `
            <input ref="input" />
        `,
        methods: {
            focusInput() {
                this.$refs.input.focus()
            }
        },
        mounted() {
            this.focusInput()
        }
    })

    此外,你可以添加另一个ref到组件本身,并使用它来触发来自父组件的focusInput事件

    <base-input ref="usernameInput"></base-input>
    this.$refs.usernameInput.focusInput()

    $refs只在组件呈现后填充,它只是作为直接操作子组件的口子——应该避免从模板或计算属性中访问$refs

    is

    期望值:string | Object(组件选项对象)

    用于动态组件

    例如:

    <!-- 当currentView变化时,component改变 -->
    <component :is="currentView"></component>
  • 相关阅读:
    root----TH1
    linux debug
    python基础 文件操作
    linux下挂载硬盘
    安装双系统
    路由器相关
    007-python 获取网卡实时流量(转)
    ssh密钥登录失败(转)
    当while read line 遇到 ssh(转)
    python实用功能之001-邮件发送
  • 原文地址:https://www.cnblogs.com/cathy1024/p/13859900.html
Copyright © 2020-2023  润新知