zoukankan      html  css  js  c++  java
  • Vue 温故而知新 props如何双向属性绑定

    传送门:https://cn.vuejs.org/v2/guide/components-custom-events.html

    https://segmentfault.com/q/1010000012055834/a-1020000012055960

    1、最单纯的做法:$emit 事件回调

    // 父组件
    <msgbox :god='title' @shift="fuck"></msgbox>

    data () {
      return {
        title: '我是标题'
      }
    }, fuck (data) { this.title = fuck } // 子组件
    <button @click='go'></button>
    go () { this.$emit('shift', '你要更新的值'); }

    (推荐)其实父组件如果只是赋值的话,可以写的更简洁一点。可以省略回调函数的定义和绑定。

    // 父组件
    <msgbox :god='title' @shift="title = $event"></msgbox>
    
    // 子组件
    <button @click='go'></button>
    go () { this.$emit('shift', '你要更新的值'); }

    $event是内置变量,你甚至可以这样写:

    <msgbox :god='title' @shift=" val => title = val""></msgbox>

    2、官方推荐的做法: @update 状态更新事件

    原理同1,我是看不出区别。主要是更加规范吧,看到这个就知道是双向属性更新了。同时也少了自定义事件名的烦恼。

    // 父组件
    <msgbox :god='title' @update:title="title = $event"></msgbox>
    
    // 子组件
    <button @click='go'></button>
    go () { this.$emit('update:title', '你要修改的值') }

    3、我强烈推荐的做法:v-bind.sync

    // 父组件,可以省略 @update 或者 @event
    // 等同于:
    <msgbox :god='title' @update:title="title = $event"></msgbox>
    <msgbox :god.sync='title'></msgbox>
     
    // 子组件
    <button @click='go'></button>
    go () { this.$emit('update:title', '你要修改的值') }
  • 相关阅读:
    2017.3.13-afternoon
    2017.3.13-morning
    2017.3.10-afternoon
    2017.3.10-morning
    2017.3.9-afternoon
    2017.3.9-morning
    神经网络入门
    webpack 安装
    git 常用命令
    mysql 用户管理和权限设置
  • 原文地址:https://www.cnblogs.com/CyLee/p/9721285.html
Copyright © 2011-2022 走看看