Javascript 有没有办法将文件存储在React状态?

Javascript 有没有办法将文件存储在React状态?,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我正在进行一个项目,需要在我的组件状态下存储一个图像,以便我可以将文件和附带的数据发送到另一个组件,该组件将数据上传到我的Firebase数据库,并将图像上传到我的Firestore 我试着用正常方式设置状态,使用提交图像时调用的函数。但是我要传递文件的状态仍然为空 初始状态: state = { title: '', description: '', date: '', ticket: '', price: '', image: [] } 输入

我正在进行一个项目,需要在我的组件状态下存储一个图像,以便我可以将文件和附带的数据发送到另一个组件,该组件将数据上传到我的Firebase数据库,并将图像上传到我的Firestore

我试着用正常方式设置状态,使用提交图像时调用的函数。但是我要传递文件的状态仍然为空

初始状态:

state = {
    title: '',
    description: '',
    date: '',
    ticket: '',
    price: '',
    image: []
}
输入:

<input type="file" id="image" accept="image/*" onChange={this.handleChangeImage} />

如果我在控制台上记录变量“file”,我会得到该文件,但console logging state.image只会显示一个空数组。

尝试将句柄函数更改为:

handleChangeImage = (e) => {
  const file = e.target.files[0];
  const newImages = [...this.state.image];
  newImages.push(file);
  this.setState({
    image: newImages
  });
}

尝试将句柄函数更改为:

handleChangeImage = (e) => {
  const file = e.target.files[0];
  const newImages = [...this.state.image];
  newImages.push(file);
  this.setState({
    image: newImages
  });
}

这个问题现在已经解决了。我是个白痴。我的问题不是状态没有用文件更新,问题是控制台日志输出发生在状态用文件更新之前

状态总是用文件更新,我只是从来没有意识到


换句话说,这个问题不是问题,只是一个愚蠢的新手犯的错误。

这个问题现在已经解决了。我是个白痴。我的问题不是状态没有用文件更新,问题是控制台日志输出发生在状态用文件更新之前

状态总是用文件更新,我只是从来没有意识到


换句话说,这个问题不是问题,只是一个愚蠢的新手犯的错误。

const newImages=this.state.image仅创建指向同一数组的新指针。您考虑的是
constnewimages=[…this.state.image]嗨,不幸的是这也不起作用。文件的状态仍然为空。如果可能的话,我想查一下。但是我找不到关于它的任何信息。
const newImages=this.state.image仅创建指向同一数组的新指针。您考虑的是
constnewimages=[…this.state.image]嗨,不幸的是这也不起作用。文件的状态仍然为空。如果可能的话,我想查一下。但是我找不到任何关于它的信息。