如何定义状态?

时间:2018-01-20 18:35:15

标签: reactjs web

是否有人在网络应用的上下文中对有一个很好的定义?

更具体地说:状态在React的上下文中是什么意思 - 它与第一个定义有什么不同?

我看到在React开发中使用了很多状态,但我还没有找到一个可靠,简洁的定义。

2 个答案:

答案 0 :(得分:1)

常规:状态是应用程序当前存储的所有数据。

在React的上下文中:State是一个对象,它定义了 - 除了props之外 - 如何呈现组件。状态可以(不像道具)由组件本身改变。

答案 1 :(得分:0)

在两种情况(反应和网络应用程序)的背景下的状态是相同的。

来自wikipedia

  

在信息技术和计算机科学中,如果程序旨在记住先前的事件或用户交互,则程序被描述为有状态的;记住的信息称为系统状态。

该引文的重要部分是 记住之前的事件或用户互动

在网络应用

状态通常存储在某个数据库中。 Web应用程序从数据库中检索“状态”(数据),提供允许用户与状态交互的视图,然后将新的“状态”(数据)发送回数据库。

In react

React可以被认为是向用户呈现应用程序的“状态”。从某处检索数据,react将数据(状态)显示给用户,允许用户修改它,然后将其发送回找到它的位置(记住)。

然而,当人们在反应的背景下谈论“状态”时,他们通常指的是当用户忙于与之交互时,数据的内部表示或反应在内存中的反应。

一个包含某种状态的简单反应组件:

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      userName: 'Leeloo'
    };

    // This binding is necessary to make `this` work in the callback
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    const name = (this.state.userName === 'Leeloo') ? 'Korben' : 'Leeloo'
    this.setState({
      userName: name
    })

  }

  render() {
    return ( <
      button onClick = {
        this.handleClick
      } > {
        this.state.userName
      } <
      /button>
    );
  }
}

ReactDOM.render( < Toggle / > , document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

在上面的示例中,组件创建了一些状态并将其存储在类的“state”属性中。

它记住了它的内部状态。

当组件呈现时,它会查找存储在状态中的值并将其显示在按钮标签上。单击该按钮时,this.state将更新为“记住”单击按钮的事件。

在功能齐全的Web应用程序中,您将从数据库中检索数据,将数据存储在状态中,允许用户与之交互,然后将数据发送回数据库。

例如,您可能会显示用户个人资料页面,用户更改其姓名,密码,说明等...您将存储他们在该页面上所做的所有更改的“状态”,直到他们点击提交按钮为止。然后,您可以从组件状态收集所有更改并将其发送回数据库进行存储(记住)。

此外,您可能希望将状态存储在react组件中,以描述应用程序的外观应如何基于与其的交互。例如,InputBox组件可能具有hasError状态,而当为true时,会向组件添加红色边框。