我想了解ReactJS中的SetState和Prevstate

2023-12-13

我是 ReactJS 的新手,我在项目中使用向导形式,使用户能够执行下一步和上一步。我复制了下一个按钮的一些代码,但老实说不明白它的含义。

你能帮我理解下面的代码吗:

next() {
    this.setState(prevState => ({ current: prevState.current + 1 }));
}

感谢您的贡献。

正如评论中所建议的,您可能应该看看文档,但由于您是新贡献者,我想我会尝试回答您的问题。

State 和 setState 如何工作

每个组件反应类都有一个“状态”。当“状态”更新时,组件将重新渲染。setState是用于更新组件状态的方法。this指的是组件本身。

你的组件state对象最初可能看起来像这样:{ current: 0, something: 'foo' }.

next() 正在做什么

你打电话时next(), then setState也会被调用。setState通过回调来调用。回调提供一个参数,此处名为prevState- prevState 是当前状态state在组件上,所以{ current: 0, something: 'foo' }.

返回值setState将设置所提供的状态对象上的任何字段。打电话后this.setState,新值component.state{ current: 1, something: 'foo' }.

重新渲染

将触发组件的重新渲染,因为新状态和先前状态对象的浅比较将返回false.

希望这可以帮助!

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

我想了解ReactJS中的SetState和Prevstate 的相关文章

随机推荐

  • 将对象上传到 Amazon s3 时如何为其设置 ACL?

    我可以将图像从 Android 上传到 Amazon s3 但它们始终是私人的 没有人可以展示它们 我必须在 Amazon s3 管理控制台上公开它 我无法在上传图像时为其设置 ACL 我了解到 有两种方法可以将图像从Android上传到A
  • 在每行列之间插入零的行和列

    如果我有一个MxN矩阵 我如何在matlab中原始矩阵中的每隔一列 行之后添加 而不是替换 一行零和一列零 实际上结果将是 2Mx2N 您可以通过以下方式进行操作 不要添加新的行和列 而是创建一个空矩阵并填充原始矩阵中的元素 创建一个具有维
  • 正则表达式在 VS Code 中查看后面?

    我正在 VS Code 中开发语法扩展 但在查看正则表达式模式背后遇到了困难 给定以下字符串 我只想返回cmp当它前面是 fmt fmt cmp foo 我在另一个编辑器中使用的匹配字符串是这样的 lt fmt w 但是 这在 VS Cod
  • 如何使用abs使搜索菜单项在操作栏中显示完整视图

    我在操作栏中有五个操作菜单项 我正在使用操作栏 sherlock 库 如下所示 In onCreateOptionsMenu 我使用了以下代码 menu add 0 1 0 Settings setShowAsAction MenuItem
  • LinkedIn SDK 位码 iOS 9

    适用于 iOS 的 LinkedIn SDK 仍然不支持 Bitcode 什么时候可以使用 有什么办法可以解决 iOS 9 上的这个问题吗 到目前为止 我已经尝试在 pbxproj 文件上禁用 Bitcode 支持 但这对于整个项目来说并不
  • Android Studio Youtube 导入存在问题。 “无法解析 YouTubePlayerSupportFragment”

    我正在尝试使用 Android Studio IDE 在应用程序中开发 YouTube 功能 这是我目前的代码 The issue is surrounding the imports Now I have the JAR file imp
  • 将 int 格式设置为电话号码

    有没有办法可以将例如 0000000000 格式化为 000 000 0000 我正在返回一个列表框 其中包含尚未格式化的电话号码集合 我想要的是格式化它 这就是我在视图中的内容 并从控制器 ViewData phoneList new S
  • C++ - 编译器如何决定以引用类型作为参数的重载函数?

    在学习 C 时 我遇到了转换序列这一复杂的主题 并且遇到了一个我自己无法解决的问题 void g const double std cout lt lt void g const double lt lt std endl void g c
  • 来自线程池的 QNetworkAccessManager

    一个非常基本的问题 该文档提到 所有方法QNetworkAccessManager是可重入的 如果是这样 正在执行get 方法在一个QRunnable没有锁合法吗 我的代码看起来像这样 class MyClass public QRunna
  • 给定两个目录树,如何找出哪些文件的内容不同? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 如果我想找到两个目录树之间的差异 我通常只需执行 diff r dir1 dir2 这准确地输出了相应文件之间的差异 我只想获取内容不同的相应文件的列表 我认为这只是将命令行选项传递
  • 如何仅序列化 Jackson 孩子的 ID

    使用 Jackson fasterxml jackson 2 1 1 时是否有内置方法仅序列化孩子的 id 我们想发送一个Order通过 REST 有一个Person参考 然而 person 对象非常复杂 我们可以在服务器端刷新它 所以我们
  • javascript中从子窗口刷新父窗口

    我已经寻找了一段时间 找不到适合我需求的答案 我有一个页面弹出一个窗口 window open 让用户登录 创建cookie 设置会话 然后重定向到另一个页面 当模态重定向时 我想刷新父页面 这样我刚刚做的所有好东西都会被父页面识别 我尝试
  • 数据库设计:被其他实体引用的“代码”表

    我正在构建一个数据库作为一个简单的练习 它可以托管在任何数据库服务器上 所以我试图尽可能保持标准 基本上我想做的是一个被其他实体引用的 代码 表 我解释 xcode id code r role p property code r admi
  • 在浏览器中使用 PHP 脚本运行 Composer

    想知道是否可以执行composer从带有一个 PHP 包装器的浏览器 因为我无权通过 shell 访问服务器 不确定是否可以使用 cURL 来做到这一点 Danack 解决方案的替代方案是包括 composer composer 作为一个
  • apache 上的 Django 与 mod_wsgi (Linux) - 403 禁止

    好的 所以我正在关注this教程 当我尝试通过本地服务器访问我的网站时 我收到这个奇怪的错误 Forbidden You don t have permission to access on this server Apache 2 4 6
  • 如何使用java从SVN存储库获取所有文件和目录

    我有一个任务要完成 我想连接到 SVN 存储库 并且必须使用 java 代码将所有目录和文件从 svn 下载到我的本地系统 我对此很陌生 并尝试使用示例来读取单个文件内容http svnkit com kb dev guide commit
  • 创建一个变量来保存不同类型的对象 C++

    我有 3 个不同的对象A B and C 根据给定的参数 我想在这些不同的对象中进行选择 在编程中 class A public void printHello cout lt lt HELLO A lt lt endl class B p
  • 如何在postgres COPY批量插入期间增加主键?

    我有一张桌子serialid 约束 id serial NOT NULL CONSTRAINT pricing cache pkey PRIMARY KEY id 现在我想使用postgresCOPY命令批量插入csv数据到表中 COPY
  • MVVM / ObservableCollection 问题

    我有以下 XAML
  • 我想了解ReactJS中的SetState和Prevstate

    我是 ReactJS 的新手 我在项目中使用向导形式 使用户能够执行下一步和上一步 我复制了下一个按钮的一些代码 但老实说不明白它的含义 你能帮我理解下面的代码吗 next this setState prevState gt curren