create-react-native-app显示新警告

时间:2018-04-13 18:38:29

标签: react-native create-react-native-app

使用create-react-native-app创建新应用程序现在会生成新警告。有什么我需要做的来纠正警告吗?例如,我如何更新列出的组件:

@available(iOS 8.0, *)
open class UIAlertAction : NSObject, NSCopying {

    public convenience init(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Swift.Void)? = nil)

    open var title: String? { get }

    open var style: UIAlertActionStyle { get }

    open var isEnabled: Bool
}

这里有新的警告:(可以忽略所有这些吗?create-react-native-app会更新为使用0.55.x吗?)

 ExpoRootComponent, RootErrorBoundary, Text, View

2 个答案:

答案 0 :(得分:1)

自从我使用react-native之后已经有一段时间了,但我每天都在使用React。

您可能正在体验与新的Context API有关的事情。你应该读这个:https://github.com/facebook/react-native/issues/18175

基本上,componentWillMount将被弃用,可能在明年左右,之后,它将消失。相反,您应该能够将所有componentWillMount生命周期方法更改为componentDidMount

要明确,这:

componentWillMount() {
  performTask()
}

变为:

componentDidMount() {
  performTask()
}

差异主要在于调用生命周期方法时 。值得注意的是,这些都只是功能,没有什么超级神奇的。

当组件即将开始安装时,

componentWillMount()会运行,并且如果你在那里执行类似网络请求的事情(这是一种反模式),则可能会出现旧的风险,您可能会得到网络响应在安装Component之前返回,因此无法例如使用数据正确设置Component的状态。

安装Component并在DOM中运行

componentDidMount()

我猜这种弃用至少在一定程度上与帮助人们在组件安装时避免状态问题有关。其余的弃用可能是由于新的Context API。

您可以在此处阅读:https://reactjs.org/docs/context.html

为您提供有关这些更改的“上下文”的最快方法是,如果您记得这一点,它的目的是改善Redux Provider等传递数据:

<Provider store={store}>
  <App />
</Provider>

注意那里的商店。有些变化与商店有关,最终可能会弃用Redux。如果您有兴趣,我建议进一步研究。

另外需要提及的是,与异步渲染有关的重大变化将会发生,这将极大地影响渲染性能,尤其是在大型复杂应用中。

要了解所有内容,请观看Dan Abramov撰写的此视频: https://www.youtube.com/watch?v=v6iR3Zk4oDY

再次注意,React 16.3 +

与此同时,您可以降级到React 16.2并恢复您认为正常的,但我猜测。

答案 1 :(得分:0)

可以安全地忽略警告,但不再存在已弃用的生命周期方法,从react 17.x开始。

如果您想要更新,this SO post确实很有帮助。这是我上周用来更新代码库的内容。这个问题的两个答案都提供了如何更新代码,具体取决于你在生命周期钩子里做什么。

注意: 许多npm库也使用不推荐使用的生命周期警告,其中许多都不会更新最新的API更新。因此,即使您从代码中删除了所有已弃用的方法,您仍然可能会在控制台中看到警告。