单向数据流

一种组件化中的数据流向的规范:

  • 数据总是从父组件向子组件流动
  • 子组件不可以改变父组件流入的数据(属性 props)

设置 props

类型

为 props 设置类型使用对象的方式 {prop : type},props 都可以通过 undefined / null
只要是构造的类型都可以为 props 的类型

  1. <script>
  2. export default {
  3. props:{
  4. str: String,
  5. num: Number,
  6. bool: Boolean,
  7. sym: Symbol,
  8. obj: Object,
  9. arr: Array,
  10. fun: Function,
  11. date: Date,
  12. reg: Regexp,
  13. p: Promise,
  14. c: MyClass
  15. }
  16. }
  17. </script>

或者用一个对象来定义 props 的属性,使用 type 属性来定义类型

  1. <script>
  2. export default {
  3. props:{
  4. str: {
  5. type: String
  6. },
  7. num: {
  8. type: Number
  9. },
  10. bool: {
  11. type: Boolean
  12. },
  13. }
  14. }
  15. </script>

默认值

,default 属性为默认值
引用值的默认值是用函数返回一个副本的方式来设置

  1. <script>
  2. export default {
  3. props:{
  4. str: {
  5. type: String,
  6. default: 'abc'
  7. },
  8. num: {
  9. type: Number,
  10. default: 123
  11. },
  12. bool: {
  13. type: Boolean,
  14. default: true
  15. },
  16. obj: {
  17. type: Object,
  18. default() {
  19. return {a:1, b:'2'}
  20. }
  21. },
  22. arr: {
  23. type: Array,
  24. default() {
  25. return [1, 'a', 2, 'b']
  26. }
  27. }
  28. }
  29. }
  30. </script>

必要值

required: true,来设置此值必需传入 props

  1. <script>
  2. export default {
  3. props:{
  4. str: {
  5. type: String,
  6. required: true
  7. },
  8. num: {
  9. type: Number,
  10. default: 123
  11. },
  12. }
  13. }
  14. </script>

验证器

validator 设置一个验证器的 function, return true 通过验证

  1. <script>
  2. export default {
  3. props:{
  4. str: {
  5. type: String,
  6. validator(val){
  7. return ['success', 'warning', 'danger'].indexOf(val) !== -1
  8. }
  9. }
  10. }
  11. }
  12. </script>