【问题标题】:How to save File object array in redux store?如何在 redux 存储中保存文件对象数组?
【发布时间】:2019-06-11 02:05:37
【问题描述】:

我想将文件对象数组保存在 redux 存储中。

这是关于reducers的代码

    case types.SET_PICTURE:
      console.log("action");
      console.log(action.newPictureFiles);
      console.log(action.newPictureDataURLs);
      return {
        ...state,
        inquiryForm: {
          ...state.inquiryForm,
          pictureFiles: [...action.newPictureFiles],
          pictureDataURLs: [...action.newPictureDataURLs]
        }
      };

这段代码是关于调度的

class Attachment extends Component {
  constructor(props) {
    super(props);
    this.state = {
      pictureFiles: this.props.pictureFiles,
      pictureDataURLs: this.props.pictureDataURLs,
      uploadedURLs: []
    };
    this.onDrop = this.onDrop.bind(this);
  }

  onDrop(pictureFiles, pictureDataURLs) {
    // pictureFiles = [{File object}, {File object}, {File object}]
    console.log("onDrop")
    console.log(pictureFiles);
    console.log(pictureDataURLs);
    this.props.onSetPicture(pictureFiles, pictureDataURLs)
    this.setState({
      pictureFiles: pictureFiles,
      pictureDataURLs: pictureDataURLs,
    });
  }

console.log( action.newPictureFiles ) 像这样打印[File object array in chrome dbg],在reducer 函数case types.SET_PICTURE: 之后,redux 像这样打印空obj [redux result]。为什么 reducer 不能将 File 对象保存在 redux 存储中。以及如何解决?

【问题讨论】:

  • console.log(action.newPictureFiles) 的结果是什么?
  • 您能否将代码发布到您使用这些文件数组调度操作的位置。您是否将数据转换为表单数据?。
  • @WilsonLiao 喜欢这张图片[i.stack.imgur.com/Kkcl8.png]
  • @Tromesh 我附上了更多代码。谢谢

标签: reactjs redux react-redux


【解决方案1】:

您的action.newPictureFiles 有文件,但没有显示,因为控制台日志会将文件打印为空 obj。

考虑到您的操作,请使用它来记录您的所有数据。newPictureFiles 是文件数组。

action.newPictureFiles.forEach(file => {
    for (var pair of file.entries()) {
        console.log(pair[0] + ', ' + pair[1]);
    }
})

或者每个文件都这样

for (var pair of file.entries()) {
    console.log(pair[0]+ ', ' + pair[1]); 
}

【讨论】:

  • console.log(action.newPictureFiles);说像这张图片[i.stack.imgur.com/Kkcl8.png] 但是,redux 看起来像这张图片[i.stack.imgur.com/r7hPb.png]
  • 对不起,我没有很好地解释这个问题。 console.log(action.newPictureFiles) 打印好,reducer 函数case types.SET_PICTURE: 后,redux 打印空obj 像这样[i.stack.imgur.com/r7hPb.png].
  • 您的答案信息不正确,控制台能够很好地打印文件对象。只有 redux 开发工具不会显示它,因为它会尝试将其转换为 json
  • 你能告诉我们动作创建者onSetPicture
  • @Ferrybig 谢谢,我会再检查一遍,效果很好。 Redux 保存文件对象,但我在 chrome redux 窗口中看不到它。当我尝试 console.log() 时,我可以找到它。谢谢!!
猜你喜欢
  • 2020-05-12
  • 2018-01-30
  • 2021-09-22
  • 2023-03-14
  • 2021-04-16
  • 2017-03-03
  • 1970-01-01
  • 2020-06-13
相关资源
最近更新 更多