javascript - 如何在 React 中保存文件对象到状态?

标签 javascript reactjs

我正在尝试为在模式之间传递的文件对象设置状态,然后将其上传到服务器。 以下是我尝试实现的代码。

 const state = {
        selectedDocument: {
            file: {},
        },
        selectedFile: new File([''],''),
    };  //state init in constructor 

  //method being called upon modal close and passes the selected file object.

 openUploadDocumentModal(files) {
    console.log('files', files); //getting the file object here.

    const ds = new File([files[0]], files[0].name);
    //tried setting directly doest work.
    this
    .setState({
        selectedDocument: {
            file: new File([files[0]], files[0].name),
        },
        selectedFile: new File([files[0]], files[0].name),
    });

    //tried setting using the react update addon, doesnt work
    this
    .setState(prevState => update(prevState,
        {
            selectedFile: { $set: new File([files[0]], files[0].name)}, // trying to set the file file here, get {} on output
            showAddDocumentModal: { $set: false },
            showUploadDocumentModal: { $set: true },
        }
    ));
}

最佳答案

设置状态为:

const state = {
        selectedDocument: {
            file: null,
        },
        selectedFile: null,
    };

然后,将状态设置为:

this
    .setState({
        selectedDocument: {
            file: files[0],
            //files is a FileList variable, either obtained from event.target.files if obtained from input 
            //or event.dataTransfer.files if obtained from drag and drop 
            //or any other method
        },
        selectedFile: files[0],
    });

就这么简单!

关于javascript - 如何在 React 中保存文件对象到状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825101/

相关文章:

php - 如何在 websockets php 中创建事件?

reactjs - 模块构建失败(来自 ./node_modules/mini-css-extract-plugin/dist/loader.js):

javascript - 尝试在 ANTD 表中添加选择下拉列表

javascript - 如何在create-react-app中使用react-d3-components

javascript - 动态子 React 的类名

javascript - NodeJS、AngularJS - 在服务器中发布事件并监听

javascript - 将脚本放在网页底部会加速页面加载吗?

javascript - Firebase Web 代码实验室 : missing app configuration value "appId"

javascript - react : I want to update state when user select 3rd option

javascript - 如何使用 Mapbox 的集群设置 reduce 选项?