Reactjs 如何在React.js中有条件地呈现?

Reactjs 如何在React.js中有条件地呈现?,reactjs,typescript,render,Reactjs,Typescript,Render,我正在尝试在Electron React Typescript应用程序中进行条件渲染 代码如下: import React, {useCallback} from 'react' import {useDropzone} from 'react-dropzone' const imgViewer = (file: File) => { const obj_url = URL.createObjectURL(file); return( <div>

我正在尝试在Electron React Typescript应用程序中进行条件渲染

代码如下:

import React, {useCallback} from 'react'
import {useDropzone} from 'react-dropzone'

const imgViewer = (file: File) => {
  const obj_url = URL.createObjectURL(file);
  return(
    <div>
      <img src={obj_url} />
    </div>
  )
}
const pdfViewer = (file: File) => {
  const obj_url = URL.createObjectURL(file);
  return (
    <div className="col-md-12">
      <div className="embed-responsive">
        <iframe src={obj_url}></iframe>
      </div>
    </div>
  );
}
export default function MyDropzone() {
  let fileType;
  let imgF;
  const onDrop = useCallback((acceptedFiles) => {
    acceptedFiles.forEach((file) => {
      const reader = new FileReader()

      reader.onabort = () => console.log('file reading was aborted')
      reader.onerror = () => console.log('file reading has failed')
      reader.onload = () => {
        const binaryStr = reader.result
        console.log("binaryStr", binaryStr)
      }
      reader.readAsArrayBuffer(file)
      fileType = file.type

      console.log("file.type: ", file.type);

      if (fileType.includes("image/")) {
        console.log("FileType: image");
        return imgViewer(file);
      }

      if (fileType.includes("/pdf")) {
        console.log("FileType: pdf");
        return pdfViewer(file);
      }
    })
  }, [])

  const {getRootProps, getInputProps} = useDropzone({onDrop})

  return (
    <div {...getRootProps()}>
      <input {...getInputProps()} />
      <p>Drag 'n' drop some files here, or click to select files</p>
    </div>
  )
}
import React,{useCallback}来自“React”
从“react dropzone”导入{useDropzone}
常量imgViewer=(文件:file)=>{
const obj_url=url.createObjectURL(文件);
返回(
)
}
const pdfViewer=(文件:file)=>{
const obj_url=url.createObjectURL(文件);
返回(
);
}
导出默认函数MyDropzone(){
让文件类型;
让imgF;
const onDrop=useCallback((acceptedFiles)=>{
acceptedFiles.forEach((文件)=>{
const reader=new FileReader()
reader.onabort=()=>console.log('文件读取被中止')
reader.onerror=()=>console.log('文件读取失败')
reader.onload=()=>{
const binaryStr=reader.result
log(“binaryStr”,binaryStr)
}
reader.readAsArrayBuffer(文件)
fileType=file.type
log(“file.type:”,file.type);
if(fileType.includes(“image/”){
log(“文件类型:image”);
返回imgViewer(文件);
}
if(fileType.includes(“/pdf”)){
log(“文件类型:pdf”);
返回pdfViewer(文件);
}
})
}, [])
const{getRootProps,getInputProps}=useDropzone({onDrop})
返回(
将一些文件拖放到此处,或单击以选择文件

) }
如何在MyDropzone中渲染图像和pdf文件,调用适当的imgViewer或pdfViewer?
我已经设置了这两个函数,但我不知道如何有条件地呈现。

请提供一个工作片段,如果您有一个片段可以清楚地显示您的问题,它将比没有片段时更快地解决您的问题,例如,您可以从文档中解释的代码sandboxConditional render中创建一个片段:谢谢@DennisVash我的情况没有那么简单。我将编写一个更好的代码post@NishargShah我打算写一篇更好的帖子。无论如何,谢谢你的回答。请提供一个有效的代码片段,如果你有一个代码片段清楚地显示了你的问题,它将比没有代码片段的代码片段更快地解决你的问题,例如,您可以从文档中解释的代码sandboxConditional render中创建一个片段:谢谢@DennisVash我的情况没有那么简单。我将编写一个更好的代码post@NishargShah我打算写一篇更好的帖子。谢谢你的回答