为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
React

1.函数式无状态组件

2.es5方式React.createClass组件 

3.es6方式extends React.Component

区别:

    无状态组件无法进行数据的操作 es5的它是利用function模拟class的写法做出来的es6 是通过es6新增class的属性创建的组件此组件创建简单






1.函数式无状态组件

    语法:

    function HelloComponent(props){
        return <div> Hello {props.name}</div>    }
    ReactDOM.render(<HelloComponent name="Sebastian" />, mountNode)
2.es5方式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>
            );
    }
});
InputControlES6.propTypes = {
    initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
    initialValue: ''
};
3.es6方式extends React.Component
class InputControlES6 extends React.Component{
    constructor(props) {
        super(props);
        // 设置 initial state       
            this.state = {
                text: props.initialValue || 'placeholder'        
            };
        // ES6 类中函数必须手动绑定        
        this.handleChange = this.handleChange.bind(this);
    }
    handleChange(event) {
        this.setState({
            text: event.target.value
        });
    }
    render() {
        return (
           <div>
                Type something:
                   <input onChange={this.handleChange}               value={this.state.text} />
            </div>
        );
    }
}
InputControlES6.propTypes = {
    initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
    initialValue: " "
};

区别:

    无状态组件无法进行数据的操作 es5的它是利用function模拟class的写法做出来的es6 是通过es6新增class的属性创建的组件此组件创建简单




作者:叮叮当1016
链接:https://www.jianshu.com/p/7c3d17971dfb


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消