我在react native中创建了一个非常简单的页面。但是,我收到警告:
警告:使用新组件API的组件将不会调用不安全的旧生命周期。
%s使用%s,但还包含以下旧生命周期:%s%s%s
应删除上述生命周期。在此处了解有关此警告的更多信息: https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html,Styled(PickerNB),getDerivedStateFromProps()、、 UNSAFE_componentWillReceiveProps,
发生这种情况是因为基于本机的Picker。如果删除选择器,则不会收到警告。
...
class ChangeProperty extends Component {
constructor(props) {
super(props);
this.state = {
selectedProperty: '1'
};
}
componentDidMount() {
this.props.getProperties(); // It just loads a properties data from action component
}
onChangeProperty(value) {
this.setState({
selectedProperty: value
});
}
updatePropertyBTN = async () => {
await AsyncStorage.setItem('CurrentPropertyID', this.state.selectedProperty);
NavigationService.navigate('iRent');
}
...
<Picker
mode="dropdown"
iosHeader="Select Property"
placeholder="Property"
iosIcon={<Icon name="arrow-down" />}
selectedValue={this.state.selectedProperty}
textStyle={{ color: '#C0C0C0' }}
style={{ width: '100%' }}
onValueChange={(text) => this.onChangeProperty(text)}
>
{Object.keys(this.props.properties).map((key) => {
return (
<Picker.Item
label={this.props.properties[key]}
value={key}
key={key}
/>
);
})}
</Picker>
}
这不会在我的代码中引起任何错误,但是终端中的警告消息使我不安,因为我不知道是什么原因造成的。
谢谢
答案 0 :(得分:0)
之所以发生警告,是因为NativeBase选择器似乎正在使用React不再支持的旧生命周期方法(警告中提到的 eg componentWillReceiveProps)-与这无关您的代码。
确保将NativeBase更新到最新的软件包版本,如果是最新版本,则可以在其仓库here上提出问题