如何使可重用的react自定义钩子与react

时间:2019-08-24 13:50:52

标签: reactjs typescript react-hooks

我正在尝试从使用JavaScript迁移我的React和firebase项目以使用Typescript, 所以在javascript basde中,我做了一个自定义钩子,以便从firestore中获取文档, 参数是文档的路径。但是,根据路径的不同,返回值会有所不同,那么如何在打字稿中编写可重用的返回值?

在这里,我定义了预期的返回值之一,这些值经过硬编码, 那么我可以使用推理类型以及如何实现它,还是有更好的方法?

import { useEffect, useState } from 'react';
import { db } from './firebase';

const useDoc = (path: any) => {
  const [docs, setDocs] = useState();
  useEffect(() => {
    return db.doc(path).onSnapshot((docs: any) => {
      setDocs({
        ...docs.data(),
        id: docs.id
      });
    });
  }, [path]);
  return docs as ChannelInfo;
};

interface ChannelInfo {
  topic: string;
  id: string;
}

export default useDoc;

0 个答案:

没有答案