zoukankan      html  css  js  c++  java
  • React生命周期

    1.Mounted: react components被 render解析,生成对应的DOM节点,并被插入浏览器的DOM结构的一个过程,页面呈现出来以后,已经mounted了

    2.Updated: 一个mounted的react components被重新render的过程,并不是相应的DOM结构一定会改变,react会把这个components的当前state和最近一次的state进行对比,只有当state确实改变并影响到DOM结构的时候,才会改变相应的DOM结构

    3.Unmounted: 一个mounted的react components的对应节点被从DOM结构中移除的过程

    每一个状态都封装了hook函数.

    1.

    getInitialState()

    componentWillMount();

     The componentDidMount() hook runs after the component output has been rendered to the DOM.

    props: 通过组件调用方,在调用组件的时候指定的。一般情况下,props一旦指定,不会改变,especially for 被调用的组件

    All React components must act like pure functions with respect to their props.

    state: 私属于当前组件,state值是可变的,state的每次修改,都会造成components从当前状态进入update阶段

     State allows React components to change their output over time in response to user actions, network responses, and anything else, without violating this rule.

    2.componentWillReceiveProps() :当一个mounted的component将要接受新的props时调用,函数参数是新的props对象

       shouldComponentUpdate(): 在一个mounted的component已经接受到新的props和新的state之后,判断是否有必要更新DOM结构;函数的参数有两个,第一个是新的props对象,第二个是新的state对象

    3. componentWillUnMount(): 可以做一些释放资源的操作,比较少。

    *****About setState()

    Local state is exactly that: a feature available only to classes.

    有三个需要注意的地方:

    1.Do Not Modify State Directly:

    // Wrong
    this.state.comment = 'Hello';

    Instead, use setState():

     
    this.setState({date: new Date()});
    // Correct
    this.setState({comment: 'Hello'});

    The only place where you can assign this.state is the constructor.

    class Clock extends React.Component {
      constructor(props) {
        super(props);
        this.state = {date: new Date()}; 
      }
    
      componentDidMount() {
    
      }
    
      componentWillUnmount() {
    
      }
    
      render() {
        return (
          <div>
            <h1>Hello, world!</h1>
            <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
          </div>
        );
      }
    }

    2.State Updates May Be Asynchronous

    Because this.props and this.state may be updated asynchronously, you should not rely on their values for calculating the next state.

    // Wrong
    this.setState({
      counter: this.state.counter + this.props.increment,
    });

    To fix it, use a second form of setState() that accepts a function rather than an object. That function will receive the previous state as the first argument, and the props at the time the update is applied as the second argument:

    // Correct  //arrow function
    this.setState((prevState, props) => ({
      counter: prevState.counter + props.increment
    }));
    
    
    // Correct  // normal function
    this.setState(function(prevState, props) {
      return {
        counter: prevState.counter + props.increment
      };
    });

    3.State Updates are Merged

    When you call setState(), React merges the object you provide into the current state.

    For example, your state may contain several independent variables:

      constructor(props) {
        super(props);
        this.state = {
          posts: [],
          comments: []
        };
      }

    Then you can update them independently with separate setState() calls:

     
      componentDidMount() {
        fetchPosts().then(response => {
          this.setState({
            posts: response.posts
          });
        });
    
        fetchComments().then(response => {
          this.setState({
            comments: response.comments
          });
        });
      }
  • 相关阅读:
    在WCF中使用Flag Enumerations
    WCF开发教程资源收集
    [转]WCF 4 安全性和 WIF 简介
    Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]
    Asp.Net Web API 2第十八课——Working with Entity Relations in OData
    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    函数 生成器 生成器表达式
    函数的进阶
  • 原文地址:https://www.cnblogs.com/ariel-zhang/p/6808016.html
Copyright © 2011-2022 走看看