美文网首页前端
react基本知识

react基本知识

作者: 小鱼嘻嘻 | 来源:发表于2019-02-17 10:46 被阅读3次
react的render函数

很多时候我们都认为react就是render大法,也确实是,每次我们都是通过render来重新渲染页面,我们来看render的例子:

render() {
    //JSX 语法
    // {}
    let helloWorld = 'yuxi';
    // array
    return (
      <span>
        <div className="App">
             helloWorld,{helloWorld};
        </div>
       
        <div>
          <States disable={false}
            handShow={this.handShow}>
            <span>hello world</span>
            <span>hello yuxi</span>
            <span>hello xiaoyu</span>
        </States>
        </div>
      </span>
    );
  }

需要注意的是:render应该只做页面展示和渲染,不应该有构造函数,回调函数,声明周期等。

react的state状态

statereact的状态管理,react是单向数据流的,当我们需要对数据做改变的时候应该是:

constructor() {
    super();
    console.log('this is constructor....')
    this.state = {
      disable:false,
    }
  }
  handClick = () => this.setState(
    {
      disable: !this.state.disable
    }
  )
react的props属性

当我们需要把父组件的数据或者函数传递给子组件的时候,我们一般都使用props,我们来看一个例子:
传递给子组件:

     <States disable={false}
            handShow={this.handShow}>
            <span>hello world</span>
            <span>hello yuxi</span>
            <span>hello xiaoyu</span>
        </States>

子组件获取:

 let args = this.props.disable;

我们再来比较一下reactprops,到底什么时候用哪个呢?
简单来理解:

  • 如果需要改变数据就使用:state
  • 如果需要传递数据就使用:props
    有一篇文章写得比较好:ReactJS: Props vs. State
react的声明周期

react常用的声明周期有:

  • constructor 构造函数
  • componentWillMount
  • componentDidMount
  • componentWillUpdate
  • componentDidUpdate
  • componentWillUnmount
    总的来说我们常用的就是:
    constructor,componentWillMount,componentDidMount
    来看一个简单例子:
import React, { Component } from 'react'

export class States extends Component {
  constructor() {
    super();
    console.log('this is constructor....')
    this.state = {
      disable:false,
    }
  }
  handClick = () => this.setState(
    {
      disable: !this.state.disable
    }
  )

  componentWillMount() {
  
    console.log('this is will mount')
  }

  componentDidMount() {
    console.log('this is did mount');
  }

  componentWillUpdate() {
    console.log('this is will update');
  }

  componentDidUpdate() {
    console.log('this is did update');
  }

 

  handShow = () => {
    let args = this.state.disable;
    this.props.handShow(args);
  }

  handFocus = () => {
    this.refs.myFocus.focus();
  }

  render() {
    // state practise 
    // set this.props.children
    // operate virtral DOM
    let args = this.props.children;
    let DOME = React.Children.map(args,(child) => {
        return <li>{child}</li>
    });
    console.log(DOME)
    return (
      <div>
       <input type="text" disabled={this.state.disable}></input>
       <button onClick={this.handClick}> click me</button>
       <button onClick={this.handShow}>show</button>
       <ol>
         {DOME}
       </ol>
       <input type="text" ref='myFocus'></input>
       <button onClick={this.handFocus}> focus</button>
      </div>
    )
  }
}

export default States

相关文章

网友评论

    本文标题:react基本知识

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