在 Next.js SSR 上使用 FileReader?

Using FileReader on Next.js SSR?

我有一个 Next.js 应用程序,我正在尝试使用 FileReader 读取 'uploaded' 文件的内容。

我的组件如下所示:

  let fileReader;
  let props = {
    multiple: false,
    onRemove: file => {
      const index = fileList.indexOf(file);
      const newFileList = fileList.slice();
      newFileList.splice(index, 1);
      setFileList(newFileList);
    },
    beforeUpload: file => {
      setFileList($ => [file]);
      fileReader.readAsText(file);
      return false;
    },
    fileList,
  };

  useEffect(() => {
    fileReader = new FileReader();

    fileReader.onload = event => {
      setFileData(JSON.parse(event.target.result));
    };

    setReady(true);
  }, []);

我的上传表单调用 props.beforeUpload 将文件传递给它,但是我遇到的问题是此时 fileReader 未定义。

我怀疑这是因为服务器端渲染了什么和客户端渲染了什么,但是我不确定如何处理这个问题?

我不知道你怀疑什么是正确的,但如果你真的认为服务器端渲染破坏了它,那么你可以使用 next 的动态导入并使用 ssr:false 使其在客户端上呈现仅侧面,more info