React Native 错误 - 不变违规:ART 已从 React Native 中删除
Posted
技术标签:
【中文标题】React Native 错误 - 不变违规:ART 已从 React Native 中删除【英文标题】:React Naitve Error - Invariant Violation: ART has been removed from React Native 【发布时间】:2020-06-03 11:59:02 【问题描述】:ART 是从 react-native-progress 模块中的“react-native”导入的。
import Animated, ART, StyleSheet, View from 'react-native';
我更新了模块,现在它从@react-native-community/art 导入。
import Surface as ARTSurface from '@react-native-community/art';
ART 没有在其他任何地方的项目中使用,但我仍然面临同样的错误。 知道有什么问题吗?
错误信息: Invariant Violation:ART 已从 React Native 中移除。现在可以从“@react-native-community/art”而不是“react-native”安装和导入它。见https://github.com/react-native-community/art。
Screenshot of the error.
【问题讨论】:
【参考方案1】:通过查看您的堆栈跟踪,您正在使用 react-native-progress,这是它的内部依赖项,这就是您面临此问题的原因。
根据 react-native-progress 的文档。
https://github.com/oblador/react-native-progress/blob/master/README.md#reactart-based-components
因此,根据文档,您也可以将其删除以修复此错误。
Note: If you don't want the ReactART based components and it's dependencies, do a deep require instead: import ProgressBar from 'react-native-progress/Bar';.
因此,您可以避免使用这些基于ART
的组件,或者尝试如下修复。
in file Circle.js, CircleSnail.js , Pie.js,
replace ART.Surface with
import Surface from '@react-native-community/art';
and in file Shapes/Arc.js
import Shape, Path from '@react-native-community/art';
and replace the same above.
【讨论】:
【参考方案2】:任何依赖 ART 的包都会给你带来问题,不仅是 react-native-progress ,还有像这样的加载器的包 react-native-loading-spinner-overlay , 您可以通过修复导入找到另一个包来更改此设置
自 SDK 36 起,Art 库已被删除, 如果需要使用依赖于ART的react-native-progress,可以使用裸工作流并安装@react-native-community/art,或者使用Svg实现自己的进度指示器
【讨论】:
以上是关于React Native 错误 - 不变违规:ART 已从 React Native 中删除的主要内容,如果未能解决你的问题,请参考以下文章
使用 react-redux 与 react-native 连接时的不变违规
不变违规:元素类型在 createMaterialTopTabNavigator()/MaterialTopTabView 渲染方法中无效,React Native w/React Navigatio
不变违规:本机模块不能为空。 React Native Firebase 应用程序