TypeError:无法将属性'src'设置为null

时间:2020-09-26 08:07:26

标签: javascript html jquery reactjs

我正在尝试使用react-file-viewer预览.docx文件

<FileViewer
    fileType={'docx'}
    filePath={this.state.file} //this.state.file has path of the url data
    id="output-frame-id"
    allowFullScreen={true}
/>

当用户单击.docx文件进行预览时,将引发异常:

TypeError:无法将属性'src'设置为空

并指向下面的代码

let srcData = URL.createObjectURL(this.response); // It contains a Response type of blob
error at this line ---> document.querySelector('#output-frame-id').src = srcData;

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

https://github.com/plangrid/react-file-viewer

source code

!

我在文档 id 字段中没有看到,也许这就是为什么您的选择器返回 FileViewer.propTypes = { fileType: PropTypes.string.isRequired, filePath: PropTypes.string.isRequired, onError: PropTypes.func, errorComponent: PropTypes.element, unsupportedComponent: PropTypes.element, }; FileViewer.defaultProps = { onError: () => null, errorComponent: null, unsupportedComponent: null, }; 的原因。

您应仅使用以下字段:nullfileTypefilePathonErrorerrorComponent

如果出于某种原因要对元素进行DOM操作,则可以使用unsupportedComponent包装元素:

div

但是我建议使用refs

答案 1 :(得分:1)

我认为这是因为

document.querySelector('#output-frame-id') // equal to null

您可以签入开发人员工具吗,React是否真的使用这样的ID- output-frame-id 渲染元素?我知道您的组件中有这个ID,但是React不必渲染它……这取决于FileViewer的实现,该组件可能不支持id属性,因为这是一个自定义组件。

我不确定,但是,您可以尝试使用:

  1. 使用引用
  2. 在ID之前使用冒号
:id="output-frame-id"