React-类式组件实例props属性

57 阅读1分钟

通过props接受jsx标签属性,可以创建多个不同组件实例
通过propTypes设置属性限制
通过defaultProps指定默认属性值

<!DOCTYPE html>
<html> 
    <head>
        <meta charset="utf-8" /> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <title>类式组件</title> 
    </head> 
    <body>
        <div id="test1"></div> 
        <div id="test2"></div>
        <div id="test3"></div>
        <script type="text/javascript" src="js/react.development.js"></script> 
        <script type="text/javascript" src="js/react-dom.development.js"></script> <script type="text/javascript" src="js/babel.min.js"></script> 
        <script type="text/babel">
            class Person extends React.Component{
                render(){ 
                    return (
                        <ul>
                            <li>姓名:{this.props.name}</li>
                            <li>性别:{this.props.sex}</li>
                            <li>年龄:{this.props.age}</li>
                        </ul>
                    )
                } 
            }
            // 标签属性限制  
            //isRequired 必传限制
            Person.propTypes={
                name:PropTypes.string.isRequired,
                sex:PropTypes.string,
                age:PropTypes.number,
                speak:PropTypes.func //限制类型为function
            }
            //指定默认属性值
            Person.defaultProps={
                sex:'男',
                age:18
            }
            ReactDOM.render(<Person name="jerry" age={22} sex="男" speak={speck}/>,document.getElementById('test1')) 
             ReactDOM.render(<Person name="pre" age={10} sex="女" />,document.getElementById('test2'))
             const p={name="arry" age=30 sex="女"}
             ReactDOM.render(<Person {...p} />,document.getElementById('test3'))
             function speak(){
                 console.log('我说话了')
             }
        </script> 
    </body> 
</html>

标签属性限制与属性默认值简写

将propTypes和defaultProps设置为class类的静态属性

<!DOCTYPE html>
<html> 
    <head>
        <meta charset="utf-8" /> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <title>类式组件</title> 
    </head> 
    <body>
        <div id="test1"></div> 
        <div id="test2"></div>
        <div id="test3"></div>
        <script type="text/javascript" src="js/react.development.js"></script> 
        <script type="text/javascript" src="js/react-dom.development.js"></script> <script type="text/javascript" src="js/babel.min.js"></script> 
        <script type="text/babel">
            class Person extends React.Component{
                // 标签属性限制  
                //isRequired 必传限制
               static propTypes={
                    name:PropTypes.string.isRequired,
                    sex:PropTypes.string,
                    age:PropTypes.number,
                    speak:PropTypes.func //限制类型为function
                }
                //指定默认属性值
                static defaultProps={
                    sex:'男',
                    age:18
                }
                render(){ 
                    return (
                        <ul>
                            <li>姓名:{this.props.name}</li>
                            <li>性别:{this.props.sex}</li>
                            <li>年龄:{this.props.age}</li>
                        </ul>
                    )
                } 
            }
            ReactDOM.render(<Person name="jerry" age={22} sex="男" speak={speck}/>,document.getElementById('test1')) 
             ReactDOM.render(<Person name="pre" age={10} sex="女" />,document.getElementById('test2'))
             const p={name="arry" age=30 sex="女"}
             ReactDOM.render(<Person {...p} />,document.getElementById('test3'))
             function speak(){
                 console.log('我说话了')
             }
        </script> 
    </body> 
</html>