了解React.js中的状态

组件的状态和生命周期非常强大,可以使事情在动态应用程序中正常工作。

状态通常在有状态组件中使用。随着钩子的引入,我们现在也可以在功能组件中添加状态。挂钩的名称为useState

状态是一个JavaScript对象,可以通过用户操作进行更改,并向UI添加动态性。使用状态从服务器更新数据是常见的用例。

状态和道具之间的区别-

  • 众所周知,props是一个JavaScript属性对象,其中包含作为属性传递给组件的信息。

  • 道具值是不变的,不应在组件内部更改。

  • 状态是可变的,可以根据操作进行更改。

  • 可以在基于类的组件中将状态创建为对象。要在功能组件中创建状态,我们可以使用useState挂钩。

  • 状态可以通过服务器调用和事件处理程序之类的副作用进行更新。

在类上创造状态

class Message extends React.component{
   constructor(props){
      super(props);
      this.state = { message: ‘hello’};
   }
}

要么

class Message extends React.component{
   state = {message:’hello’};
   constructor(props){
      super(props);
   }
}

在功能组件中创建状态

import React, { useState } from ‘react’;
function Message(){
   const [message, setMessage] = useState(‘hello’);
   //return statement
   return (
   );
}

useState提供两个输出1.可变消息和2.设置器方法(此处为setMessage)。消息使用字符串hello初始化。

更新状态

状态不应该直接更新。状态的所有更新都应使用react库提供的setState方法来完成。

this.setState({message:’welcome’});

在类或其构造函数中,状态的直接初始化仅允许一次。

如果我们需要在更新任何属性时使用先前的状态或道具,则可以通过异步方式进行,如下所示:

This.setState( (prevState, props) =>(
   {
      message: prevState.message+’hello’  
   }
))