對象可能為“null”。TS2531

我想使用QrReader根據[https://github.com/Musawirkhann/react_qrcode_generation_scanner

它是由react寫的。但是我想用tsx。

qrRef.current.openImageDialog()中有一個錯誤Object is possibly 'null'. TS2531

import React, { useState, useRef } from 'react'
import QrReader from 'react-qr-reader'

type ScanFileState = {
  scanResultFile: string
  setScanResultFile: React.Dispatch<React.SetStateAction<string>>
  qrRef: React.MutableRefObject<null>
}

const ScanFile: React.FC<ScanFileState> = () => {

  const qrRef = useRef(null)

  const [scanResultFile, setScanResultFile] = useState('')

  const handleErrorFile = (error) => {
    alert(error)
  }
  const handleScanFile = (result) => {
    if (result) {
      setScanResultFile(result)
    }
  }

  const onScanFile = () => {
    qrRef.current.openImageDialog()
  }

  return (
    <div>
      <button type='button' onClick={onScanFile}>Scan Qr Code</button>
      <QrReader ref={qrRef}
        delay={300}
        style={{ width: '100%' }}
        onError={handleErrorFile}
        onScan={handleScanFile}
        legacyMode />
      <h3>Scanned Code: <a href={scanResultFile}>{scanResultFile}</a></h3>
    </div>
  )
}

export default ScanFile

我試著使用as。但是沒有起作用。錯誤也變為Property 'openImageDialog' does not exist on type 'HTMLButtonElement'. TS2339

  const onScanFile = () => {
    if (!qrRef) {
      return
    }
    (qrRef.current as HTMLButtonElement).openImageDialog()
  }
? 最佳回答:

你必須在這里做兩件事。首先讓typescript知道您正在創建的引用是QrReader:

const qrRef = React.useRef<QrReader>(null)

然后,由于ref在渲染啟動時可以為null,因此在調用openImageDialog時使用可選的鏈接操作符:

qrRef.current?.openImageDialog()

你可以在這里找到更多關于可選鏈接的信息。

主站蜘蛛池模板: 国产波霸爆乳一区二区| 亚洲线精品一区二区三区 | 乱码精品一区二区三区| 亚洲国产AV无码一区二区三区| 日韩社区一区二区三区| 国产吧一区在线视频| 国语精品一区二区三区| 男人免费视频一区二区在线观看| 蜜臀AV免费一区二区三区| 中文字幕一区二区三区免费视频| 无码一区二区三区AV免费| 人妻少妇精品视频一区二区三区| 一区二区三区波多野结衣| 亚洲精品国产suv一区88| 国产品无码一区二区三区在线蜜桃 | 亚洲av乱码中文一区二区三区| 国产亚洲无线码一区二区 | 久久精品无码一区二区三区免费 | 久久精品一区二区三区不卡| 视频在线观看一区二区| 手机福利视频一区二区| 国产日韩精品视频一区二区三区| 亚洲av无码一区二区乱子伦as| 无码国产亚洲日韩国精品视频一区二区三区| 久久精品一区二区三区AV| 亚洲一区二区在线视频| 国产人妖视频一区二区| 国产福利电影一区二区三区久久久久成人精品综合| 韩国理伦片一区二区三区在线播放| 一区二区三区观看免费中文视频在线播放| 成人国产一区二区三区| 精品国产一区二区三区在线观看| 日本视频一区二区三区| 欧洲精品一区二区三区在线观看 | 91在线精品亚洲一区二区| 久久精品国产一区二区三区肥胖| 香蕉免费看一区二区三区| 一区二区三区午夜| 一区二区三区亚洲视频| 亚洲国产成人久久一区WWW| 精品在线一区二区三区|