Redux 不会立即更新状态

2023-12-19

我对 Redux 有问题,更可能不是问题而是误解。 如果我在函数中进行分派并在存储中写入新值,那么我无法立即从存储中获取该函数的新值。

Example:

    testFunc = () => {
        console.log('in func: before', this.props.count);   //state store
        this.props.onButtonIncrementClick();                //dispatch a new state in the store
        console.log('in func: after', this.props.count);    //get the old state store
    };

实例: https://codesandbox.io/s/yk1jzjv6l1 https://codesandbox.io/s/yk1jzjv6l1

我怀疑这与异步有关,因为如果我将状态包装在setTimeout()一个新的状态到来了。

我很高兴听到关于为什么以及如何将值写入商店并立即从中读取它们的解释。


setState不同步 https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous,无论是你还是 Redux 更新它。

正如你所说,这是一个误解。当您直接更新它时,您可以提供要执行的回调,例如,

setState({ foo }, () => somethingWith(this.state));

(请注意,该组件已在回调之前重新渲染。)

如果您有需要在“外部”状态更新(例如 Redux)后运行的逻辑,那么有componentDidUpdate,但这也可能表明存在架构问题。

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

Redux 不会立即更新状态 的相关文章

  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • 向 JS 计算器添加键盘支持时出现的问题

    我想为我的计算器添加键盘支持 当我用键盘按下操作 即 或 时 js将其视为数字 而不是操作 例如 当我通过点击计算 10 11 时 我将得到 21 作为结果 当我通过键盘输入时 我会得到 10 为什么会发生这种情况 是否可以改变它 div
  • jQuery - 提高处理 XML 时的选择器性能

    我正在处理一个 XML 文件 当使用 XPath 样式选择器选择节点时 该文件的性能非常慢 这是运行特别慢的部分代码 for i 0 i
  • 将组件注册到现有的 Vue.js 实例

    我是 Vue js 新手 我想注册一个本地组件 如下所述 https v2 vuejs org v2 guide components html Local Registration https v2 vuejs org v2 guide
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • SVG 中三角形的圆角

    我正在尝试制作一个具有圆角的三角形 三角形将如下所示 左下角是唯一看起来相当容易制作的角 主要是因为这是一个 90 度的 转弯 该转弯是使用QSVG 中的命令具有以下参数 Q x y height x y height RADIUS从我正在
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • 如何删除从 javascript var 转义的反斜杠?

    我有这个变量 var x div class Which is div class 但是我需要 div class abcdef 我怎样才能 unes cape 这个变量来删除所有转义字符 您可以通过正则表达式将反斜杠后跟引号替换为仅引号
  • 很奇怪!调用 window.location 或 location.replace 会重定向到该页面,然后再次返回!

    我处于调试模式 因此我可以看到正在访问哪个页面 当我打电话时window location or window location replace 它会转到该页面 然后返回原始页面 怎么会这样 解决方案是添加 window location
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • javascript/jquery 禁用点击提交按钮,防止重复提交

    所以我的提交按钮如下所示 a href img src images user create product png border 0 a 当我双击它时 显然会双重提交 问题是 我将信息保存在数据库中 因此那里会有重复的信息 我不想那样 这
  • d3力定向布局-链接距离优先

    在 d3 中使用力导向布局 如何使链接距离成为优先事项 同时仍然保持良好的图形布局 如果我指定动态链接距离 但保留默认费用 则我的图形距离会因费用函数而发生一些变形 并且不再是准确的距离 但是 如果我删除电荷 图表将如下所示 任何建议表示赞
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • 在 Firefox 中使用 Javascript 检测键盘布局

    有没有办法在 Firefox 中检测客户端的键盘布局 我知道 Chrome 的答案是肯定的 请参阅https developer mozilla org en US docs Web API Navigator keyboard https
  • 指定在任何 Jest 设置发生之前运行的代码

    tl dr 是 1 我怎样才能让Jest使用原生的require函数可以在任何地方加载我的测试中的所有模块 2 我将在哪里 如何进行修改 即替换为esm加载程序 https github com standard things esm ht
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components

随机推荐

  • 删除 checkboxradio 时 jQueryMobile 未捕获异常

    收到此消息 Error cannot call methods on checkboxradio prior to initialization attempted to call method refresh 我按照这里找到的演示进行操作
  • 如何使用 RestSharp 发送请求

    我正在尝试使用 RestSharp 客户端发布请求 如下所示 我将身份验证代码传递给以下函数 public void ExchangeCodeForToken string code if string IsNullOrEmpty code
  • 如何使用 jQuery 1.x 检测/处理 net::ERR_BLOCKED_BY_CLIENT?

    我正在尝试使用一个简单的脚本来检测内容拦截器 广告拦截扩展 基于主机的拦截 基于代理的拦截 如下所示 try ajax url pagead2 googlesyndication com pagead js adsbygoogle js d
  • 如何使用 NodeJS 在 SSH2 上执行多个命令

    我正在尝试使用 我想按照数组的顺序执行多个命令 从 GitHub 进行部署 我现在使用的代码包含在下面 async series Deploy from GitHub function callback Console shizzle co
  • 如何从 Ruby 中的 MULTI 块内的 Redis 读取数据?

    我在 MULTI 事务中封装了一组复杂的 Redis 命令 但事务中的逻辑取决于 Redis 中已有的值 但事务中的所有读取似乎都会返回nil 下面是一个演示该问题的示例 Dev gt redis set foo bar gt OK Dev
  • VBA 系统.集合.队列

    我刚刚发现here http analystcave com excel vba dictionary arrays and other data structures The VBA Queue 内置 Stacks and Queues可
  • Web 视图不适用于某些特定的 url

    public class MainActivity extends AppCompatActivity String url https www pinterest com Override protected void onCreate
  • 如何使用 swift 验证本地玩家?

    我正在尝试将游戏中心集成到我的游戏中并创建排行榜 我已经在 iTunes Connect 上创建了排行榜 启用了游戏中心并创建了一个沙盒测试器 尽管如此 我还是有这个错误 not able to authenticate fail erro
  • 使用 ruby​​ on Rails 安装 Susy 和 Compass

    我刚刚开始使用 ruby on Rails 我尝试做的第一件事就是安装 gems compass 和 susy 在弄清楚我需要将它们包含在 gemfile 中之后 我正在使用 RubyMine 并认为它会为我做这件事 当我尝试将 susy
  • 无损图像压缩工具[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Running 谷歌页面速度 https developers google com speed 在公
  • 如何在 Web 浏览器视图中从 Ionic 应用程序打开外部链接

    第 1 步 Ionic 创建新应用程序 离子启动 myApp1 侧菜单 第 2 步 创建新页面主页和关于我们 离子生成关于我们的页面 步骤 3 在 关于我们 页面创建按钮 将 URL 重定向到另一个网站 aboutus html GO ab
  • “很抱歉,出了点问题”:rails + nginx + puma + digitalocean + ssl

    我刚刚在生产服务器上的 Rails 应用程序上成功配置了 ssl 但现在 当我尝试访问该站点时 我收到 我们很抱歉 但出了点问题 错误 如果我不使用任何 ssl 设置来禁用 ssl 我的 Rails 应用程序将运行得很好 只有当我使用ssl
  • vim的正则表达式解释

    如果我想要所有带有文本 ruby 但不带有 myruby 的行 那么这就是我要做的 g
  • Rails 中的受保护方法和私有方法

    Ruby 中的方法可见性 公共 受保护和私有方法 已在以下地方得到了很好的解释 这篇博文 http weblog jamisbuck org 2007 2 23 method visibility in ruby 但在 Ruby on Ra
  • python 日志记录关闭和应用程序退出

    我在应用程序中使用日志记录模块 我想到如果日志记录模块支持一种可以优雅地关闭文件句柄等然后关闭应用程序的方法 那就太好了 例如 logger logging getLogger my app logger fatal We re toast
  • Windows 上的 SSH ControlMaster 与 Cygwin 真的可行吗?

    有没有人能够在 Windows 上使用 control master 和 cygwin 创建多个会话而无需重复登录 我需要自动执行一系列 SSH 步骤 但无法要求用户每次都输入所需的标记化密码 我已经配置了我的 cygwin ssh con
  • JDBC 中缺少 dll

    我目前正在 Java 中使用 SQL 最近我收到这个错误 com microsoft sqlserver jdbc AuthenticationJNI
  • mvc 4 windows Azure Request.Url 中的端口号错误

    我正在编写一个小型的 asp net MVC4 Web 应用程序 项目模板是 Visual Studio 2012 中的 azure mvc 4 模板 当我在 razor 视图中请求 Request Url 时 我得到了错误的端口号 例如
  • 从当前日期减去 7 天

    看来我不能从当前日期减去7天 这就是我正在做的 NSCalendar gregorian NSCalendar alloc initWithCalendarIdentifier NSGregorianCalendar NSDateCompo
  • Redux 不会立即更新状态

    我对 Redux 有问题 更可能不是问题而是误解 如果我在函数中进行分派并在存储中写入新值 那么我无法立即从存储中获取该函数的新值 Example testFunc gt console log in func before this pr