mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-06 07:06:11 +00:00
feat: use codegenNativeComponent to import native views (#1847)
Changed `requireNativeComponent` to `codegenNativeComponent` so that upcoming changes (Static View Configs, Bridgeless Mode and idk what more) in `react-native` are available in the library. Also, types and native components are now taken directly from `fabric` folder to make sure the values passed to the native components are the ones defined in props. It should work on all supported versions since `codegenNativeComponent` function exists from RN v. 0.61.0. Suggested by @RSNara and @cipolleschi Reason for [`5394bbb` (#1847)](5394bbbced): - on `Paper`, `Animated` uses `setNativeProps` method when we set `useNativeDriver` to `false`, and does not rerender the component. Therefore, new transform lands only in `SvgView` and is parsed in `RCTViewManager.m` . - on `Fabric`, the same code makes the components rerender. Due to this, information about new transform is passed to the `SvgView` child: `G` , making it apply translations from the transform in its `updateProps` method. - other than `Animated` use-case, on both archs, if we just passed `transform` prop to `Svg` component, it would end up in double transformations now as well. All of those changes are due to https://github.com/software-mansion/react-native-svg/pull/1895, which added proper parsing of RN style `transform` prop (array of transformations objects) therefore making `G` properly handle `transform` prop passed from `Svg`. Reason for [`19bcb24` (#1847)](19bcb2464b): Same as https://github.com/software-mansion/react-native-screens/pull/1624
This commit is contained in:
42
react-native.config.js
Normal file
42
react-native.config.js
Normal file
@@ -0,0 +1,42 @@
|
||||
let supportsCodegenConfig = false;
|
||||
try {
|
||||
const rnCliAndroidVersion =
|
||||
require('@react-native-community/cli-platform-android/package.json').version;
|
||||
const [major] = rnCliAndroidVersion.split('.');
|
||||
supportsCodegenConfig = major >= 9;
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dependency: {
|
||||
platforms: {
|
||||
android: supportsCodegenConfig ? {
|
||||
componentDescriptors: [
|
||||
"RNSVGCircleComponentDescriptor",
|
||||
"RNSVGClipPathComponentDescriptor",
|
||||
"RNSVGDefsComponentDescriptor",
|
||||
"RNSVGEllipseComponentDescriptor",
|
||||
"RNSVGForeignObjectComponentDescriptor",
|
||||
"RNSVGGroupComponentDescriptor",
|
||||
"RNSVGImageComponentDescriptor",
|
||||
"RNSVGLinearGradientComponentDescriptor",
|
||||
"RNSVGLineComponentDescriptor",
|
||||
"RNSVGMarkerComponentDescriptor",
|
||||
"RNSVGMaskComponentDescriptor",
|
||||
"RNSVGPathComponentDescriptor",
|
||||
"RNSVGPatternComponentDescriptor",
|
||||
"RNSVGRadialGradientComponentDescriptor",
|
||||
"RNSVGRectComponentDescriptor",
|
||||
"RNSVGSvgViewAndroidComponentDescriptor",
|
||||
"RNSVGSymbolComponentDescriptor",
|
||||
"RNSVGTextComponentDescriptor",
|
||||
"RNSVGTextPathComponentDescriptor",
|
||||
"RNSVGTSpanComponentDescriptor",
|
||||
"RNSVGUseComponentDescriptor"
|
||||
],
|
||||
cmakeListsPath: "../android/src/main/jni/CMakeLists.txt"
|
||||
} : {},
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user