react定义组件的方法有哪些?区别是什么?

react定义组件的方法有哪些?区别是什么?

函数定义组件

函数定义一个组件是一个无状态组件

        // 没有数据 无状态组件
        function Parent(){
            return <div>1111
            {/*组件之间的嵌套*/}
                <Child card="郭优秀" />
            </div>
        }
        //组件之间的的传值  用props 属性
        function Child(props){
            console.log(props)
            return <div>2222------{props.card}  </div>
        }
        ReactDOM.render(
            <div>
                {
                    <Parent/>
                }
            </div>,

            document.getElementById('app')
        )

注意事项:
- 名称大写
- return返回内容
- 必须有根元素

es6 React.component 定义组件

class定义的组件是一个有状态的组件(有自己数据的就是有状态组件)

    class Child2 extends React.Component{
        render(){
            return(
                <div>
                    2222
                    {/*把要传递的值存储在  localStorage中  */}
                    {window.localStorage.setItem("site",this.state.num)}
                </div>
            )
        }
        constructor(){
            super()
            // 有这个都是有状态组件
            this.state={
                num:6
            }
        }
    }

es5 React.createClass定义的组件

es5原生方式 定义的组件是一个有状态组件 不过现在不常用了 因为是通过es6新增class的属性创建的组件较为创建简单,相对于React.createClass更好的实现了代码复用

var InputControlES5 = React.createClass({
    propTypes: {//定义传入props中的属性各种类型
        initialValue: React.PropTypes.string
    },
    defaultProps: { //组件默认的props对象
        initialValue: ''
    },
    // 设置 initial state
    getInitialState: function() {//组件相关的状态对象
        return {
            text: this.props.initialValue || 'placeholder'
        };
    },
    handleChange: function(event) {
        this.setState({ //this represents react component instance
            text: event.target.value
        });
    },
    render: function() {
        return (
            <div>
                Type something:
                <input onChange={this.handleChange} value={this.state.text} />
            </div>
        );
    }
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值