Jus*_*ite 8 typescript react-native
我在微软推出如何将你的ReactNative项目转换为TypeScript 的教程中继续学习.
一切都很顺利,直到我达到我需要在项目中包含图像的程度.显然tsc没有将图像打包到outdir中,所以我的问题是当ReactNative与TypeScript一起使用时,人们当前如何使用图像或其他静态资源?
我最终解决问题的方法是将图像移动到项目的根目录,而不是在src目录中。
images在项目根目录下创建文件夹images/
- sample-image.jpg
src/
- App.tsx
output/
- App.js
Run Code Online (Sandbox Code Playgroud)
const image = require('../images/sample-image.jpg');
...
<Image src={image} style={{ width: 100, height: 100 }} />
Run Code Online (Sandbox Code Playgroud)
由于输出的形状应该与源目录的形状相匹配,因此引用顶级图像目录就可以正常工作。
copyfilesnpm 包:此选项允许您保持图像内联,但在重建项目时需要额外的步骤。
copyfilesnpm i -D copyfiles
package.json脚本中...
"start": "npm run build && node node_modules/react-native/local-cli/cli.js start",
"build": "npx tsc && npm run add-assets",
"add-assets": "copyfiles -u 1 'src/**/!(*.js|*.jsx|*.map|*.ts|*.tsx)' lib/",
...
Run Code Online (Sandbox Code Playgroud)
现在执行npm run buildor npm start,我们漂亮的新包copyfiles将复制任何非源文件到 out 目录。
注意:您可能需要根据需要更新 glob 以忽略您不想复制到 outdir 的文件。
小智 5
我不确定这是否是最好的方法,我解决的方法是,
根据您的文件夹结构,在包含图像的根文件夹中创建一个文件(应该通过打字稿读取)或任何其他文件夹。将其命名为“your-name-here.d.ts”(d.ts 应该是扩展名。它被打字稿引擎使用)
declare module '*.jpg' {
import { ImageSourcePropType } from 'react-native';
const value: ImageSourcePropType;
export default value;
}
Run Code Online (Sandbox Code Playgroud)
ImageSourcePropType 是 Image 中的 source 参数所期望的类型
现在任何使用图像的地方都可以用作
import SampleIcon from '../images/sample-image.jpg';
<Image src={SampleIcon} style={{ width: 100, height: 100 }} />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |