美文网首页
React(四)—— props与render

React(四)—— props与render

作者: 感觉不错哦 | 来源:发表于2019-02-11 15:02 被阅读35次
    props是组件固有属性的集合,其数据由外部传入,一般在整个组件的生命周期中都是只读的

    <input type="text" />

    上方HTML 在 HTML语言中,type称之为属性,而在React中属性称之为prop

    <script type="text/babel">
    class HelloComponent extends React.Component{
        render(){
            return (
                <h1>Hello</h1>
            )
        }
    }
    ReactDOM.render(<HelloComponent/>,document.getElementById('div'))
    </script>
    

    这个格式要很清晰了哈

    class HelloComponent extends React.Component{
        render(){
            return (
                <h1>Hello,{this.props.attr,this.props.name}</h1>
            )
        }
    }
    
    ReactDOM.render(<HelloComponent name="React" attr="666"/>,document.getElementById('div'))
    

    组件的属性集合即是React的props,可以打印一下看看props

        class HelloComponent extends React.Component{
            constructor(props){
                super(props)
                this.handleClick = this.handleClick.bind(this)
            }
            handleClick(){
                console.log(this.props)
            }
            render(){
                return (
                    <div>
                        <h1>Hello,{this.props.attr,this.props.name}</h1>
                        <button onClick={this.handleClick}>GET</button>
                    </div>
                )
            }
        }
    
    ReactDOM.render(<HelloComponent name="React" attr="666"/>,document.getElementById('div'))
    

    注意一下,render的return要有一个根节点并只有一个,刚才又犯错了

    打印出一个对象,就是组件的属性集合{name: "React", attr: "666"},可以调用对象的属性来取值了

    props与state的区别

    props不能被其所在的组件修改,从父组件传递进来的属性不会在组件内部更改;state只能在所在组件内部更改,或在外部调用setState函数对状态进行间接修改。

    render函数

    首先说render是一个函数,它对于组件来说,render函数是必需的。render函数的主要流程是检测this.props和this.state,再返回一个单一组件实例。

    render函数应该是纯粹的,也就是说,在render函数内不应该修改组件state,不读写DOM信息,也不与浏览器交互。如果需要交互,应该在生命周期中进行交互。

    内容有点少 O(∩_∩)O~

    相关文章

      网友评论

          本文标题:React(四)—— props与render

          本文链接:https://www.haomeiwen.com/subject/bklqeqtx.html