TypeError: объект не является функцией с созданием настраиваемого хука реакции - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь использовать настраиваемый хук, но столкнулся с этой ошибкой без каких-либо c действий. Также я искал здесь похожие проблемы, но обнаружил, что они говорят о сокращении и создании функции

TypeError: Object is not a function
UploadBard
src/components/uploadBar.jsx:4
  1 | import React, { useState, useEffect } from 'react'
  2 | import useStorage from '../custumHooks/useStrage'
  3 | function UploadBard({ file }) {
> 4 |       const [progress, err, url] = useStorage(file)
  5 | 
  6 |       return (
  7 |             <div class="progress">

source file of the err

import React, { useState, useEffect } from 'react'
import useStorage from '../custumHooks/useStrage'
function UploadBard({ file }) {
      const [progress, err, url] = useStorage(file)

      return (
            <div class="progress">
                  {/* {progress} */}
                  <div class="progress-bar" role="progressbar" style={{ width: `${progress}%`, ariaValuenow: "41", ariaValuemin: "0", ariaValuemax: "100", }}></div>
            </div>
      )

}
export default UploadBard;

the file of the custom hook

import React, { useState, useEffect } from 'react'
import { storage } from '../firebase/config'
function useStorage(file) {
      const [progress, setProgress] = useState(file)
      const [err, setErr] = useState(null)
      const [url, setUrl] = useState(null)
      useEffect(() => {
            if (file) {
                  const storageRef = storage.ref(file.name)
                  storageRef.put(file).on('state_changed', (snap) => setProgress((snap.bytesTransferred / snap.totalBytes) * 100), err => console.log(err))
            }
      }, [file])
      return { progress, err, url }
}
export default useStorage;

1 Ответ

0 голосов
/ 03 августа 2020

Вы возвращаете объект {} из своего настраиваемого хука, а не массив []. Поэтому попробуйте:

const { progress, err, url } = useStorage(file)

Вместо исходного кода:

const [progress, err, url] = useStorage(file)
...