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

将Axios响应设置为状态。错误:重新渲染过多。React限制渲染的数量以防止无限循环

高茂
2023-03-14

我想建立一个组件

  1. 使用Axios将文件上传到API。
  2. 响应被存储并传递到另一个组件。

但使用下面的代码,我得到了太多的错误重新渲染和错误突出显示

setData({ completeData: res.data })

组件的完整代码如下所示。我是一个比较新的反应者,3天多来一直在试图找出这个错误的根本原因,但没有任何帮助。我不知道我哪里出错了。

const UploadChat = () => {
  const [data, setData] = useState({
    selectedFile: "Hi",
    completeData: null,
  })


  const fileUpload = (e) => {
    e.preventDefault()
    let file = e.target.files[0]
    setData({
      selectedFile: file,
    })
  }

  const submitChat = async (e) => {
    e.preventDefault()
    let postData = new FormData()
    postData.append("file", data.selectedFile)
    try {
      const res = await axios.post("http://127.0.0.1:4555/upload", postData)
      setData({ completeData: res.data })
    } catch (err) {
      console.log(err)
    }
  }

  return (
    <div>
      <form onSubmit={(e) => submitChat(e)}>
        <input type="file" name="myfile" onChange={(e) => fileUpload(e)} />
        <input type="submit" name="submit" />
      </form>
      {data.completeData ? (
        <Redirect to={{ pathname: "/dashboard", state: data.completeData }} />
      ) : (
        <h1>Not</h1>
      )}
    </div>
  )
}

共有1个答案

古彦
2023-03-14

不用想太多,它是否与

setData((prevData) => ({ ...prevData, completeData: res.data }))

?

 类似资料:
  • 如何防止以下错误: 太多的重新渲染。React限制渲染的数量,以防止无限循环。' 我刚刚将一个基于类的组件更改为功能组件,但它不起作用 我的源代码 我只是将一个基于类的组件更改为功能组件,我得到了这些错误。 0个 如何防止以下错误: 太多的重新渲染。React限制渲染的数量,以防止无限循环。'

  • 我正在尝试创建登录表单,但出现了此错误。 任何人都可以解释为什么会发生此错误?? 我是新来的反应本土。 忽略这个(只是为了加量)= =我得补充一些没用的句子因为StackOverflow给我< code > '看起来你的帖子大部分是代码;请再补充一些细节。(对这个stackoverflow错误感到非常沮丧)

  • 当我试图设置状态,然后得到一个错误。错误:太多的重新渲染。React限制渲染的数量以防止无限循环。 我已经用

  • 这是来自物料界面的模板。我从GitHub的注册中选择了这个模板,我只导入了useState并尝试使用它。 它抛出“太多的重新渲染。React限制渲染数量以防止无限循环材质”, 我尝试过使用反应钩子,因为我不能实现类。

  • 我很困惑为什么Iam会出现这个错误:太多的重新呈现。React限制呈现次数以防止无限循环。当我尝试调用USESTAT保存checkBoxList数据时,就会发生这种情况。如果我注释掉行setListOptions(checkBoxList);错误消失了。我希望发生的是,setListoptions应该保存在本地,然后我可以调用listOptions来映射我的数据。谢谢你的协助。

  • 我创建了一个需要在应用程序的多个部分中单独显示的组件-(在我的导航内部、主页和单独的路由上)。因此,我在此组件中的一个use中进行了所有操作调度(用于读取数据的api调用)效果: 如您所见,此效果应该只运行一次(当组件装载时)。 在其他任何地方,我都不会在此组件内部或外部调度这些特定操作。 该组件在3个位置渲染(导航内部、其自身的时间路径和主组件内部)。我可以在导航内部同时在时间上渲染它,没有问题