File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -86,6 +86,20 @@ yarn react-native run-ios
8686yarn react-native run-android
8787```
8888
89+ ### Optional: using source/drawable
90+
91+ If you need to use the underlying image source/drawable you can use the ` VectorImage.resolveAssetSource ` method, for example with Expo's native tabs:
92+
93+ ``` tsx
94+ const iconSource = VectorImage .resolveAssetSource (require (' ./icon.svg' ));
95+
96+ return (
97+ <NativeTabs.Trigger name = " index" >
98+ <Icon src = { iconSource } drawable = { iconSource .uri } />
99+ </NativeTabs.Trigger >
100+ );
101+ ```
102+
89103## Troubleshooting
90104
91105### ` generate ` command outputs "Error while parsing image.svg"
Original file line number Diff line number Diff line change @@ -8,6 +8,10 @@ export interface VectorImageProps extends ImageProps {
88 source : ImageRequireSource ;
99}
1010
11- declare const VectorImage : React . FunctionComponent < VectorImageProps > ;
11+ export function resolveVectorAssetSource ( source : ImageRequireSource ) : ImageRequireSource | null ;
12+
13+ declare const VectorImage : React . FunctionComponent < VectorImageProps > & {
14+ resolveAssetSource : typeof resolveVectorAssetSource ;
15+ } ;
1216
1317export default VectorImage ;
Original file line number Diff line number Diff line change @@ -3,20 +3,27 @@ import { Image } from 'react-native';
33import { getAssetByID } from '@react-native/assets-registry/registry' ;
44import getResourceName from './getResourceName' ;
55
6- export default function VectorImage ( { source, style , ... props } ) {
6+ export function resolveVectorAssetSource ( source ) {
77 const asset = getAssetByID ( source ) ;
8+ if ( ! asset ) {
9+ return null ;
10+ }
11+ const resourceName = getResourceName ( asset ) ;
12+ return { uri : resourceName , width : asset . width , height : asset . height }
13+ }
14+
15+ export default function VectorImage ( { source, ...props } ) {
16+ const asset = resolveAssetSource ( source ) ;
817 if ( ! asset ) {
918 console . warn (
1019 `No asset registered for source "${ source } ", you may have to generate assets and recompile`
1120 ) ;
1221 return null ;
1322 }
14- const resourceName = getResourceName ( asset ) ;
23+
1524 return (
16- < Image
17- source = { { uri : resourceName } }
18- style = { [ { width : asset . width , height : asset . height } , style ] }
19- { ...props }
20- />
25+ < Image source = { asset } { ...props } />
2126 ) ;
2227}
28+
29+ VectorImage . resolveAssetSource = resolveVectorAssetSource ;
You can’t perform that action at this time.
0 commit comments