React入门笔记:一个小表格组件的构建过程

vue,angular,react,这三个框架,本来打算学vue。图书馆资料就一本,就转向了React(图书馆突然买了好多。。。),其实还是因为它能够使用native开发,现在开发安卓我用的是kotlin,想着前端学习,也要加把劲了,迈入更好的路。

一直在印象笔记写:

1:组件入门

TIPS:引入库文件(现在还没到jsx,用了两个,一个核心,一个dom库)

<script src="react.js"></script>

<script src="react-dom.js"></script>

1.1使用预定义组件(这些是预定的组件构造器)

ReactDOM.render();//渲染函数

ReactDOM.render(“what”,where);//绑定用id

React.DOM.*({JSON属性},子节点}//属性省略null, 子节点可以嵌套,组件构造器

<div id="example"></div>

ReactDOM.render(

    React.DOM.h1(null,"你好,React"),

    document.getElementById('example')

);

等同于:<div><h1>你好</h1></div>

1.2:嵌套使用:(说实话,没用JSX时候,复杂的时候,我都写蒙了,找不到括号匹配了。。。)

ReactDOM.render(

    React.DOM.span({style:{color:"red"}},

        React.DOM.em({style:{color:"blue"}}," 我是斜体蓝色span"),"我是正常红色span"),

    document.getElementById('ex1')

    );

等同于:

<div id="ex1">

    <span style="color:"blue">我是斜体蓝色

        <em style="color:"red">我是正常红色</em>

    </span>

</div>

1.3.使用自定义组件(这个以后是主要使用的啦)

var myELe = React.createClass(

{

    propTypes:{

                name:React.PropTypes.string.isRequired,

                title:React.PropTypes.string

                    },

    getDefaultProps:function(){

                return {

                                title:"我是默认属性值"

                            }

        },

    render:function(){

                return React.DOM.span(null,"我是自定义组件span"+this.props.title)//调用属性值

    }

});//自定义组件函数

React.createClass();//参数,json格式,render渲染函数,返回React组件



ReactDOM.render(

    React.createElement(myEle),

    document.getElementById('ex3')

    );//引用



工厂模式:



    var myEle2 = React.createFactory(myEle);

    ReactDOM.render(

    myele2(),

    document.getElementById('ex3')

    );

tips:默认属性值,只能返回非isRequired的属性值,设置接收属性值的对象:propTypes:{属性名:属性值,React.PropTypes.值类型.是否必须

创建组件,渲染传入需要接收的属性值,如果非isRequired没有传,则使用getDefaultProps函数返回的值!

在定义组件对象时,this.props.属性名,可以调用属性

 

1.4 State状态(对象里面值为函数,称方法)

下面是一个完整的自定义组件与渲染

var myIput = React.createClass({

//默认属性json格式

    proptypes:{

        text:React.PropTypes.string

    },

//默认属性设置函数

    getDefaultProps:function(){

        return {

            text:''

        }

    },

//初始化状态函数,动态设置属性值

    getInitialState:function(){

        return {

            text:this.props.text

        }

    },

//自定义方法,设置state状态

    _textChange:function(e){

        this.setState({

            text:e.target.value

        })

    },

//渲染函数,设置监听器,onChange:自定义方法

    render:function(){

            return React.DOM.div(null,

                       React.DOM.textarea({

                           defaultValue : this.props.text,

                           onChange : this._textChange

                   }),

                  React.DOM.h3(null,this.state.text.length)

            )

        }

    

});//自定义组件,一个实时计算输入字符长度的组件



调用:

var myInput_render = ReactDOM.render(

    React.createElement(myIput,{text:'default'}),

    document.getElementById('ex4'));

 

1.5 外部访问组件

myInout_render.setState({text:""});//外部访问组件,并改变state,不推荐!

 

1.6 生命周期方法:使用生命周期给我们后来方面实时修改页面数据

componentWillUpdate()//组件再次渲染调用,如render前调用,组件的props与state发生改变会调用

componentDidUpdate()//render执行完毕,更新的组件同步DOM后调用,不会在初始化调用

componentWillMount()//新节点插入前调用

componentWillDidMount()//新节点插入之后调用

componentWillUnmount()//组件从DOM移除调用

shouldComponentUpdate(newProps,newState)//在componentWillUpdate之前触发

{···

_log:function(Mname,args){

        console.log(Mname,args);

    },

    componentWillUpdate:function(){

        this._log('componentWillUpdate:渲染前调用|props与state改变调用',arguments)

    },

    componentDidUpdate:function(){

        this._log('componentWillDidUpdate:render执行完,同步DO
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值