# i. 属性(默认属性与属性验证)

TIP

(1) 在组件上通过key = value 写属性, 通过this. props获取属性
(2) 子组件内通过 this. props获取父组件传递的属性
(3) 注意在传参数的时候,如果写成isShow="true",那么这是一个字符串
(4) 实例属性定义在constrctor内部,需通过 (new Navbar()). obj 调用实例属性,或通过this. 调用实例属性
(5) 默认属性和属性验证

import React from 'react'

// 子组件
class Navbar extends React. Component{

  // 实例属性
  obj = {

    name: "kerwin"

  }

 // 静态 不需要经过实例化的 类属性
  static defaultProps = {

    myname: "默认的值",
    myshow: true

  }

  // 属性验证
  static propTypes = {

    myname: propsTypes.string
    myshow: propsTypes.bool

  }
  render(){

    // console.log(this.props) 获取属性 (myname myshow)
    return (
      <div>
        Navbar-{this.props.myname}
        
        {/* 模拟的 v-show */}
        <button className={this.props.myshow?'':'hide'}>按钮</button>

        {/* 模拟的 v-if */}
        {
          this.props.myshow?<button>按钮</button>:null
        }
      </div>
    )

  }
}
// 默认属性 (类属性  类名. 属性)
// 废弃的类属性 写法
// Navbar. defaultProps = {
//   myname:"默认的值", 
//   myshow:true
// }

// 父组件
class App extends React. Component{
  render() {

    var obj1 = {
      myname:"home",
      myshow:false
    }
    return (
      <Navbar {...obj1} myshow={true}>
      <Navbar myname="home" myshow={false}>
      <Navbar />
    )

  }
}