首页 > 解决方案 > React Native datetimepicker 问题。在这段代码中为什么 Platform.OS==='ios'?true:false?

问题描述

状态的基本用法

从“反应”导入反应,{组件};
从'react-native'导入{View,Button,Platform};
从“@react-native-community/datetimepicker”导入 DateTimePicker;

导出默认类 App 扩展组件 {
  状态 = {
    日期:新日期('2020-06-12T14:42:42'),
    模式:'日期',
    显示:假,
  }

  setDate = (事件,日期) => {
    日期 = 日期 || this.state.date;

    这个.setState({
      显示:Platform.OS === 'ios' ?true : false, // *问题:为什么 ios 为 true?
      日期,
    });
  }

  显示 = 模式 => {
    这个.setState({
      显示:真实,
      模式,
    });
  }

  日期选择器 = () => {
    this.show('日期');
  }

  时间选择器 = () => {
    this.show('时间');
  }

  使成为() {
    常量 { 显示,日期,模式 } = this.state;

    返回 (
      <查看>
        <查看>
          <Button onPress={this.datepicker} title="显示日期选择器!" />
        </查看>
        <查看>
          <Button onPress={this.timepicker} title="显示时间选择器!" />
        </查看>
        { 显示 && <DateTimePicker 值={日期}
                    模式={模式}
                    is24Hour={真}
                    显示=“默认”
                    onChange={this.setDate} />
        }
      </查看>
    );
  }
}

如果Platform.OS === true是 ios,datetimepicker 窗口将始终显示并且不会永远关闭。为什么要区别对待android和ios?代码来自官方 github,所以我想它有一些正当的理由。

标签: react-native

解决方案


好吧,他们有两种完全不同的外观模式来坚持原生的外观和感觉。ios datetimepicker 是一个可以在视图中放置并保持打开的组件(由轮子制成),而 android 更像是一个弹出窗口,因此它必须仅在用户对其触发器进行操作时关闭和打开。

希望它会有所帮助问候!马可


推荐阅读