自学react(下)

首先,我们要说几种方法:

1.和状态有关的:

React把组件看成是一个状态机,只需要更新组件的state,然后根据新的state重新渲染界面(不操作dom);

setState:设置状态;

replaceState:替换状态;

  不能用this.state来修改状态,不过可以通过this.state来读取,this.setState方法就修改状态值,每次修改之后就会自动调用this.render方法,再次渲染组件。

和属性有关:

SetProps:设置属性;

replaceProps:替换属性;

react有两个类似的方法 props和state,其中props是不可变的,而state可以根据用户交互来改变(this.props.name和this.state.name)

       props可以通过getDefaultProps()方法为props设置默认值。在React.createClass({

getDefaultProps:function(){

return{

name:”XXXX”

}}})

props验证使用propTypes

强制更新:forceUpdate;

  一般来说,当组件重新渲染的时候也会读取this.state和this.props如果说状态没有改变的话,就会之更新dom。forceUpdate这个方法会通知react需要调用render,但是并不是很推荐使用这种方法。这样的话就可以仅仅从this.state和this.props中读取状态触发render()调用。

获取dom节点:findDOMNode;

如果说组件已,经挂在到dom中就会返回对应的dom元素,当render返回的是null或者是false时,findDOMNode就也返回null;

PS:

  这里要说一下,组件获得的并不是真正的dom节点,而是在内存中的数据结构,是一种虚拟的dom,当他插入文档的时候才会变成真正的dom节点。首先现将所有的dom变动都现在虚拟的上进行,然后再将实际发生变动的部份反应都真实的dom上(其中有一个算法 dom diff,可以极大地提升网页的性能)

判断组件挂在载情况:isMounted:

这个可以用来判断组件是不是已经挂载到dom中了,返回的是true和false。

React组件生命周期,

  就是说三个状态,五种函数处理方法。

Mounting(已插入真实的dom),

updating(正在被重新渲染的),

UnMouning(移出真实的dom)

每个状态来说都有两种处理will和did。顾名思义,一个是进入状态之前,一个是进入状态之后。(就是把那两个单词往里面加就行,所以你就记住三个方法就差不多了)。

 componentWillMount();

 componentDidMount();

 componentWillUpdate();

 componentDidUpdate();

 componentWillUnmount();

以上是在用的时候需要记住的部分,其他的方法什么的看看api用的时候再看看比较好,毕竟不用也记不住。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="build/react.js"></script>
    <script src="build/react-dom.js"></script>
    <script src="build/browser.min.js"></script>
</head>
<body>
<div id="exam"></div>
<script type="text/babel">
    var Hello=React.createClass({
        getInitialState:function(){
            return {
                opacity:1.0
            }
        },
        componentDidMount:function(){
            this.timer=setInterval(function(){
                var opacity=this.state.opacity;
                opacity -=.05;
                if(opacity<0.1){
                    opacity=1.0;
                }
                this.setState({
                    opacity:opacity
                })
            }.bind(this),100)

        }
        ,
        render:function(){
            return (
                    <div style={{opacity:this.state.opacity}}>
                        Hello {this.props.name}
                    </div>
            )
        }
    })
    ReactDOM.render( <Hello name="world"/>,
    document.getElementById("exam"))

</script>
</body>
</html>
上面是我插入的一个小例子。主要是用一下这两篇文章中的东西,插入文件,定义方法(render一定要有的)。React.createClass来创建组件。ReactDOM.render来用。将其呈现到id名字是exam的div中。这里面的感觉就像是vue一样都是
<div id="app">
  <p>{{ message }}</p>
</div>
<script>
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  }
})
</script>
感觉上都是先定义了一块元素区域用来显示(div)。之后在固定一个方法里面用对象的形式来定义方法和值。所以还是觉得框架你在最开始学习的时候深入研究一个,达到一个可以用它来开发的时候,别的形式的也会有到大同小异的地方。学起来会先对容易些。。。

下次要说说前端的框架有哪些,框架的作用。能知道的都要去了解写一下。奋斗。古德拜


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值