【React Native】自定义格式的资源文件引入及使用

【React Native】自定义格式的资源文件引入及使用,第1张

很多时候React Native在引入资源文件的时候比如SVG,JSON文件资源的时候,需要把文件放在对应的原生工程里面去(IOS和Android分别放入),这样其实对于资源使用的整理是很麻烦的,其实官网也是有考虑到这个问题的,在React Native中文文档的图片-静态资源说明中也有提到( 点击此处连接 )。

这个配置是在node_modules文件及里面的metro打包工具下,从这里可以看到React Native支持的文件格式,我们只要往里面添加想要的格式就可以。

当然,你也可以从外部导入,在React Native创建项目的时候,也会生成一个名为metro.config.js的配置文件,直接在这里面添加就可以(注意,直接添加的话会覆盖之前的配置文件的内容,需要通过...方式进行添加)。

当然metro还可以添加各种配置,具体可以见 Metro官网 。

使用的方式其实就是跟平常的React Native引入资源的方式是一样的,直接require()进行引入就行,我们这里举一个例子。

log打出的效果如下:

debug模式返回的结果为纳早拦:

debug模式下会得到资源文件的url地址连接,这是因为React Native会debug模式中会把所有资源文件打包到index.js服务器上面去,url的话就可以传到原生自己去处理了。

release的返回结果为(Android):

在release模式下返回的结果其实就是这个资源文件的名字,这是因为React Native会通过Metro打包工具来吧外部依赖的资源文件全部进行打包进apk,并且小重新命名,它的命名规则是路径 路径 资源文件名字,而我们直接打开apk则可以在raw下看到这个文件,我们自己自洞胡定义支持的文件格式都会被打到raw文件夹下(经小部分测试,部分React Native官方支持的文件格式也会被打包进raw文件夹下,比如ttf和svg等,暂时没找到怎么自定义打包资源路径,如果有知道的大神请指教)。

至于IOS的release模式下,拿到的是一个路径而不是文件名字,需要另外做睁吵处理,然后在传递给原生进行业务处理。

前言

接上篇 ,由于引入typescript,会引发一个问题:

由于react native 生成的entry file是js格式, js里面没办法直接import ts module,而前侍需要import ts生成的js文件.如果不调整rn现在的compile方式,要么我们将ts compile之后的js文件放在ts文件同级,保证我们import的路径一致,要么把ts compile之后的文件放在一个独立的目录下,index.js中的import ts compile目录下的js文件。这两种方式前者会让我们的开发文件结构变得很混乱,后者会让index.js import ts module做特殊处理,都会造成一定的麻烦.

为了解决这个问题于是有了这篇文章,目标效果:

Part 1:调整react native文件

将index.js 和饥悔茄app.js 重命名为index.tsx 和app.tsx 并移到src目录下

Part 2:调整iOS配置

Part 3:调整Android配置烂察


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8235054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存