日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

React組件實(shí)例的核心屬性props的用法

時(shí)間:2023-02-01 20:46:29 類型:React
字號(hào):    

有了props屬性,可以動(dòng)態(tài)的向React組件傳遞信息, 同時(shí)可以對(duì)標(biāo)簽屬性的類型及默認(rèn)值進(jìn)行限制

 <!-- 準(zhǔn)備好一個(gè)容器 -->
    <div id="test"></div>
    <div id="test2"></div>

    <!-- 引入核心庫(kù)  React對(duì)象 -->
    <script src="../js/react.development.js"></script>
    <!-- 引入react-dom, 用于支持react操作dom -->
    <script src="../js/react-dom.development.js"></script>
    <!-- 引入babel, 用于將jxs轉(zhuǎn)為js -->
    <script src="../js/babel.min.js"></script>
    <!-- 引入prop-types, 用于對(duì)組件的標(biāo)簽屬性進(jìn)行限制 -->
    <script src="../js/prop-types.js"></script>
    <script type="text/babel">
        //1. 創(chuàng)建類式組件
        class Person extends React.Component{
            //props = {name:"",sex:"先生",age:0}
            state = {isHot:true}
            //props是只讀的
            render(){
                console.log(this);
                const {name,sex,age} = this.props;
                return (
                    <ul>
                        <li>姓名:{name}</li>
                        <li>性別:{sex}</li>
                        <li>年齡:{age+1}</li>
                    </ul>
                )
            }
            static propTypes = {
                name:PropTypes.string.isRequired,
                sex: PropTypes.string,
                age: PropTypes.number
            }
            static defaultProps = {
                sex:"不男不女"
            }
        }
        //有了props屬性,可以動(dòng)態(tài)的傳遞信息
       // ReactDOM.render(<Person name="小強(qiáng)" sex="男" age="18"/>,document.getElementById("test"))
        const p = {name:"yy",sex:"男",age:16}
        //上面寫法的語法糖(適合單條信息)
        ReactDOM.render(<Person {...p}/>,document.getElementById("test"))
        ReactDOM.render(<Person name="小小" age={10}/>,document.getElementById("test2"))
                             // {} 這里的{}表示里面要寫JS表達(dá)式, 
                             // babel + react 讓這里的 ...p 可以展開, 并非復(fù)制一個(gè)對(duì)象
                             // 原生這樣寫是不行的,但在這里通過babel+react讓它可以展開, 僅僅適用于標(biāo)簽屬性
         //------------------------------------------------------------------------------------------------
          // 函數(shù)式組件: 只能使用props屬性
        function Person(props){
            return (
                    <ul>
                        <li>姓名:{props.name}</li>
                        <li>性別:{props.sex}</li>
                        <li>年齡:{props.age+1}</li>
                    </ul>
                )
        }
        Person.propTypes = {
                name:PropTypes.string.isRequired,
                sex: PropTypes.string,
                age: PropTypes.number
            }
        Person.defaultProps = {
                sex:"不男不女"
            }
        const p = {name:"yy",sex:"男",age:16}
        ReactDOM.render(<Person {...p}/>,document.getElementById("test"))
                       
    </script>


<