本机基本选择器会生成“不安全的旧版生命周期”

时间:2019-08-01 19:42:32

标签: react-native native-base

我在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>
}

这不会在我的代码中引起任何错误,但是终端中的警告消息使我不安,因为我不知道是什么原因造成的。

谢谢

1 个答案:

答案 0 :(得分:0)

之所以发生警告,是因为NativeBase选择器似乎正在使用React不再支持的旧生命周期方法(警告中提到的 eg componentWillReceiveProps)-与这无关您的代码。

确保将NativeBase更新到最新的软件包版本,如果是最新版本,则可以在其仓库here上提出问题