Skip to content

getDefaultProps

司徒正美 edited this page May 19, 2017 · 6 revisions

anu与React一样,要使用默认属性,有多种方法

  1. es6风格使用getDefaultProps方法
 <!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
   
    <script src='./dist/React.js'></script>
    <script src="./test/babel.js"></script>
    <script type='text/babel'>
  
       class Parent extends React.Component {
            getDefaultProps() {
                return {
                    name: 'world'
                }
            }
            render() {
                return (<HelloComponent name={this.props.name} />)
            }
        }

        function HelloComponent(props, context) {
            return (<div>Hello {props.name}</div>)
        }

        window.onload = function() {
            ReactDOM.render(<Parent />, document.getElementById('example'));
        }
    </script>
</head>

<body>
   
    <div id='example'>这个默认会被清掉</div>
</body>

</html>
  1. 在类名中添加defaultProps对象:
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
   
    <script src='./dist/React.js'></script>
    <script src="./test/babel.js"></script>
    <script type='text/babel'>
  
       class Parent extends React.Component {
          
            render() {
                return (<HelloComponent name={this.props.name} />)
            }
        }
        Parent.defaultProps = {
            name: '我在这里'
        }
        function HelloComponent(props, context) {
            return (<div>Hello {props.name}</div>)
        }

        window.onload = function() {
            ReactDOM.render(<Parent />, document.getElementById('example'));
        }
    </script>
</head>

<body>
    <div id='example'>这个默认会被清掉</div>
</body>

</html>
  1. es6 使用静态的访问器属性
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
   
    <script src='./dist/React.js'></script>
    <script src="./test/babel.js"></script>
    <script type='text/babel'>
  
       class Parent extends React.Component {
             static get defaultProps() {
                return {
                    name: "静态"
                }
            }
            render() {
                return (<HelloComponent name={this.props.name} />)
            }
        }
       
        function HelloComponent(props, context) {
            return (<div>Hello {props.name}</div>)
        }

        window.onload = function() {
            ReactDOM.render(<Parent />, document.getElementById('example'));
        }
    </script>
</head>

<body>
    <div id='example'>这个默认会被清掉</div>
</body>

</html>