小编Luí*_*ves的帖子

如何通过 typescript 使用 React Native 的特定于平台的扩展?

问题:

我有一个带有特定于平台的代码的反应本机自定义挂钩,我需要根据平台导入该代码。如果我像这样导入它import useWifi from 'hooks/use-wifi.android';,一切都会正常(在android上)。

我尝试过的:

按照 rn 针对平台特定代码的说明,我有以下文件结构

...
hooks
  ...
  use-wifi.android.ts
  use-wifi.ios.ts
...
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试像这样导入它时import useWifi from 'hooks/use-wifi';,打字稿类型检查未通过,并且我在 Metro 中收到此错误:

error: Error: Unable to resolve module `hooks/use-wifi` from `src/screens/home/index.tsx`: hooks/use-wifi could not be found within the project.
Run Code Online (Sandbox Code Playgroud)

我添加了一个use-wifi.d.ts文件

export * from './use-wifi.android';
export * from './use-wifi.ios';
Run Code Online (Sandbox Code Playgroud)

这允许tsc通过,但地铁仍然无法捆绑。

我想我可以有一个hooks/use-wifi.ts文件并将代码拆分在那里,但如果可能的话我宁愿这样做。

typescript react-native metro-bundler

6
推荐指数
1
解决办法
1477
查看次数

标签 统计

metro-bundler ×1

react-native ×1

typescript ×1