• Props
    • coerce Prop 的参数 移除
      • 升级方式
    • twoWay Prop 的参数 移除
      • 升级方式
    • v-bind 的 .once和.sync 修饰符 移除
      • 升级方式
    • 修改 Props 弃用
      • 升级方式
    • 根实例的 Props 替换
      • 升级方式

    Props

    coerce Prop 的参数 移除

    如果需要检查 prop 的值,创建一个内部的 computed 值,而不再在 props 内部去定义,例如:

    1. props: {
    2. username: {
    3. type: String,
    4. coerce: function (value) {
    5. return value
    6. .toLowerCase()
    7. .replace(/\s+/, '-')
    8. }
    9. }
    10. }

    现在应该写为:

    1. props: {
    2. username: String,
    3. },
    4. computed: {
    5. normalizedUsername: function () {
    6. return this.username
    7. .toLowerCase()
    8. .replace(/\s+/, '-')
    9. }
    10. }

    这样有一些好处:

    • 你可以对保持原始 prop 值的操作权限。
    • 通过给予验证后的值一个不同的命名,强制开发者使用显式申明。

    升级方式

    运行迁移工具找出包含 coerce 选项的实例。

    twoWay Prop 的参数 移除

    Props 现在只能单向传递。为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定。详见:

    • 自定义组件事件
    • 自定义输入组件 (使用组件事件)
    • 全局状态管理

    升级方式

    运行 迁移工具,找出含有 twoWay 参数的实例。

    v-bind 的 .once和.sync 修饰符 移除

    Props 现在只能单向传递。为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定。详见:

    • 自定义组件事件
    • 自定义输入组件 (使用组件事件)
    • 全局状态管理

    升级方式

    运行迁移工具找到使用 .once.sync 修饰符的实例。

    修改 Props 弃用

    组件内修改 prop 是反模式 (不推荐的) 的。比如,先声明一个 prop ,然后在组件中通过 this.myProp = 'someOtherValue' 改变 prop 的值。根据渲染机制,当父组件重新渲染时,子组件的内部 prop 值也将被覆盖。

    大多数情况下,改变 prop 值可以用以下选项替代:

    • 通过 data 属性,用 prop 去设置一个 data 属性的默认值。
    • 通过 computed 属性。

    升级方式

    运行端对端测试,查看关于 prop 修改的控制台警告信息

    根实例的 Props 替换

    对于一个根实例来说 (比如:用 new Vue({ … }) 创建的实例),只能用 propsData 而不是 props

    升级方式

    运行端对端测试,将会弹出 failed tests 来通知你使用 props 的根实例已经失效。