【问题标题】:Promises are running twice in reactjs [closed]承诺在 reactjs 中运行了两次 [关闭]
【发布时间】:2021-06-11 23:07:36
【问题描述】:

我创建了一个简单的 Promise,当我调用它时,Promise 运行了两次。

import React from 'react'

function App() {

  let promise = new Promise(function (resolve, reject) {
    resolve("hello")
  })

  promise.then(function (res) {
    console.log(res)
  })
  return (
    <>
      Hello
    </>
  )
}

export default App

当我访问 localhost:3000 并打开调试器时,它显示“hello”打印了两次。我无法理解发生了什么。请帮忙

【问题讨论】:

  • 因为一次你console.log(res) 记录你好,一次你明确地console.log('hello') 记录第二次。
  • ??您发布的代码中有两个单独的对 console.log("hello") 的调用。
  • @Pointy 我在问题中错误地放置了第二个 console.log。即使没有它,它也会打印两次“你好”。现在我已经编辑了这个问题,你现在能帮我吗?这将非常有帮助。
  • React.StrictMode 使您的代码在开发模式下执行两次,以确保您没有状态问题。一般来说,你不应该在没有使用 setState 保护它的情况下在功能组件中调用 Promise,因为它会在每次渲染时被调用/评估

标签: javascript reactjs


【解决方案1】:

如果您使用的是create-react-app,您的App 很可能被StrictMode 包裹,这会导致您的App 被额外渲染。检查您应用的index.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2019-08-23
    • 2013-11-22
    • 2014-06-04
    • 2017-04-20
    相关资源
    最近更新 更多