如何定义状态?

2024-03-19

有谁有一个好的定义state在网络应用程序的上下文中?

更具体地说:什么是state在 React 的上下文中意味着——这与第一个定义有什么不同吗?

我看到“状态”这个术语在 React 开发中被大量使用,但我一直无法找到一个可靠、简洁的定义。


两种情况(React 和 Web 应用程序)上下文中的状态是相同的。

From 维基百科 https://en.wikipedia.org/wiki/State_(computer_science)

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

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

在网络应用程序中

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

In react

React 可以被认为是向用户呈现应用程序的“状态”。从某处检索数据,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 应用程序中,您将从数据库中检索数据,将该数据存储在状态中,允许用户与其交互,然后将该数据发送回数据库。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义状态? 的相关文章

随机推荐

  • 欧拉计划 #13 理解 (Python)

    问题13 http projecteuler net problem 13 http projecteuler net problem 13 计算出以下一百个 50 位数字之和的前十位数字 那么 问题的总和是 5000 位 答案是结果的前
  • Hibernate:@SecondaryTable 不起作用

    I know SecondaryTable这些问题已经发布了很多次 所以 如果有相同的问题 我还没有找到 请给我链接或建议 我的数据库中有两个表 firstTable and secondTable 两个 POJO Hibernate 类
  • 选择物化多选中的所有选项

    Bootstrap 多重选择有选择全部的选项 例如这里 https stackoverflow com questions 26525739 boostrap multiselect select all checked by defaul
  • 如何在 C 中连接两个字符串宏?

    我正在尝试为我的程序实现 VERSION 宏 该宏将在某些情况下进行更改 宏 VERSION 通过 Makefile 定义 git 信息放在那里 并且是一个字符串 现在我有一组 define d 开关 我希望 VERSION 能够反映其中哪
  • 如何在 Ruby 中创建简单的数组?

    在 Ruby 中创建这个数组的最短方法是什么 10 20 30 40 50 60 70 80 90 100 谢谢你的帮助 关于什么Range step http www ruby doc org core 2 0 Range html me
  • 在.Net 下为低完整性进程添加写访问权限

    我正在创建一个用于文件创建的 FileSecurity 该文件对于低完整性进程也应该具有写入访问权限 FileSecurity fileAcl new FileSecurity add everyone IdentityReference
  • 在 Symfony2 中配置 Assetic 的输出目录

    我想全局配置 assetic 转储 JS 文件的输出目录 目前 他们总是去web js 我想将其更改为web js compiled 可以在每个文件级别指定它 http symfony com doc 2 0 cookbook asseti
  • [:space:] 和 [:blank:] 有什么区别?

    来自正则表达式简介 http tldp org LDP abs html x17046 html blank 匹配空格或制表符 space 匹配空白字符 空格和水平制表符 对我来说 这两个定义是相同的 我想知道它们是否真的重复 如果不同 有
  • 嵌套文档上的 Azure DocumentDB ARRAY_CONTAINS

    似乎是ARRAY CONTAINS嵌套文档上的函数永远不会匹配任何文档 例如 尝试使用 Azure DocumentDB 进行以下简单查询查询游乐场 https www documentdb com sql demo Sandbox SEL
  • 为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持?

    Haskell wiki 显示您需要同时设置编译标志和运行时标志才能获得多核支持 为什么使用该库不足以在编译时获得正确的行为 为什么运行时可执行文件无法检测到它是使用 threaded 编译的并使用系统上的所有内核 除非另有指定 我认为默认
  • 在 Unix 上正确处理 PID 文件的参考

    我在哪里可以找到备受推崇的参考详细介绍了 Unix 上 PID 文件的正确处理 在 Unix 操作系统上 通常的做法是使用特殊的锁定文件 PID 文件来 锁定 程序 通常是守护程序 这是一个位于可预测位置的文件 通常是 var run fo
  • 如何在 Windows 上使用 subprocess.run 运行 bash 命令 [重复]

    这个问题在这里已经有答案了 我想使用运行 shell 脚本和 git bash 命令subprocess run 在 python 3 7 4 中 当我在上面运行这个简单的例子时子流程文档页面 https docs python org 3
  • 错误 TS2300:node_modules/@types/core-js/index.d.ts 中重复标识符“PropertyKey”

    我在 Visual Studio Code IDE 的 node modules types core js index d ts 中遇到以下错误 当我跑步时npm start为了服务该应用程序 我得到 node modules types
  • iPhone客户端证书

    我想验证我正在编写的应用程序是否正在 iPhone 上运行 会是什么 完美之处在于 Apple 将 SSL 客户端证书嵌入到每台 iPhone 中 该证书可以由接收服务器进行身份验证 我是这种情况吗 我还没有开始研究这个 我会更新我发现的任
  • 计算没有两个相邻字符相同的所有排列

    给定一个仅包含不同数量的数字 1 2 3 和 4 的序列 例如 13244 4442 等 我想计算其所有排列 以便没有两个相邻的数字是相同的 我相信它是 O N N 并且想知道是否有更好的 有人有主意吗 class Ideone stati
  • Python:删除子类中的类属性

    我有一个子类 我想要它not包括基类上存在的类属性 我尝试了这个 但它不起作用 gt gt gt class A object x 5 gt gt gt class B A del x Traceback most recent call
  • javascript 从http响应保存文件(Web Api HttpResponseMessage)

    所以当我尝试从服务器响应保存文件时遇到问题 当我尝试从浏览器中的 url 下载文件时 一切正常 但当我尝试从 clint 端发送请求时 文件已保存 但文件中存在 Object object 如果是 PDF 文件 则无法打开 请求必须包含一个
  • 如何使用 LLVM IRBuilder 从外部 DLL 调用函数?

    如何从 LLVM 调用外部 DLL 的函数 如何从 LLVM 代码调用 DLL 文件中定义的函数 由于您的问题缺少重要信息 我猜您想实现以下目标 我猜你会使用 c c 接口并且该函数有一个签名void fun void 我还猜测您将使用 L
  • 如何在离子中滚动到页面顶部

    目前我正在 javascript 和 angular js 上的 ionic 框架中工作 我只是放置搜索框并呈现客户列表 但假设在第一次尝试中我可以使用 a 进行搜索 它会显示具有 alpha a 的所有项目 但问题是当我向下滚动查看搜索结
  • 如何定义状态?

    有谁有一个好的定义state在网络应用程序的上下文中 更具体地说 什么是state在 React 的上下文中意味着 这与第一个定义有什么不同吗 我看到 状态 这个术语在 React 开发中被大量使用 但我一直无法找到一个可靠 简洁的定义 两