当前位置: 首页 > 知识库问答 >
问题:

反应严格模式不更新模型

王才
2023-03-14

我有一个应用程序在这里呈现在严格模式和非严格模式。在非严格模式下工作正常,模型在onChange中更新,但在严格模式下不工作。有什么想法,为什么以及如何解决这个问题?

https://stackblitz.com/edit/react-qvubmx

谢谢

共有1个答案

习宸
2023-03-14

好的,解决了。

this.setState(prevState => {
     const updatedTodos = prevState.todos.map((todo) => {
     if (todo.id === t.id) {
       todo.completed = !todo.completed;
     }
     return todo;
});

todo.completed=!todo.completed实际上是直接更新preState,严格模式不喜欢这样。

这是正确的方法。

return {
 ...todo,
 completed: !todo.completed
}

https://stackblitz.com/edit/react-3xywfc

 类似资料:
  • 我正在做我的项目,我注意到当严格模式打开时,它会将两个相同的元素推入我的数组。当严格模式关闭时,它只将一个元素推入数组。有什么解释为什么会这样吗? 这是我的状态。

  • 除了正常的运行模式,JavaScript 还有第二种运行模式:严格模式(strict mode)。顾名思义,这种模式采用更加严格的 JavaScript 语法。 同样的代码,在正常模式和严格模式中,可能会有不一样的运行结果。一些在正常模式下可以运行的语句,在严格模式下将不能运行。 设计目的 早期的 JavaScript 语言有很多设计不合理的地方,但是为了兼容以前的代码,又不能改变老的语法,只能不

  • 概述 进入标志 如何调用 语法和行为改变 全局变量显式声明 静态绑定 增强的安全措施 禁止删除变量 显式报错 重名错误 禁止八进制表示法 arguments对象的限制 函数必须声明在顶层 保留字 参考链接 概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立”严格模式“的

  • ECMAScript 5 最早引入了“严格模式”(strict mode)的概念。通过严格模式,可以在函数内部选择进行较为严格的全局或局部的错误条件检测。使用严格模式的好处是可以提早知道代码中存在的错误,及时捕获一些可能导致编程错误的ECMAScript 行为。 理解严格模式的规则非常重要,ECMAScript 的下一个版本将以严格模式为基础制定。支持严格模式的浏览器包括IE10+、Firefox

  • 主要内容:什么是严格模式,启用严格模式,严格模式中的变化由于 JavaScript 语法不够严谨,一直被人们所诟病,例如在使用一个变量时,可以不使用 var 关键字来提前声明(例如: ),此时 JavaScript 解释器会自动为您创建这个变量。为了使代码更加严谨,JavaScript 中引入了严格模式,一旦使用了严格模式,将不再允许使用那些不严谨的语法。 什么是严格模式 严格模式是在 ECMAScript5(ES5)中引入的,在严格模式下,JavaS

  • 要启用严格模式,只需在创建 Vuex store 的时候简单地传入 strict: true。 const store = new Vuex.Store({ // ... strict: true }) 在严格模式下,只要 Vuex 状态在 mutation 方法外被修改就会抛出错误。这确保了所有状态修改都会明确的被调试工具跟踪。 开发阶段 vs. 发布阶段 不要在发布阶段开启严格模式! 严格