反应原生 - DatePickerIOS与AsyncStorage

时间:2017-08-24 14:02:32

标签: react-native

我尝试使用redux存储DatePickerIOS日期。 有没有办法使用AsyncStorage?到目前为止,我一直在努力,没有运气。有关如何将AsyncStorage与简单的DatePickerIOS组件一起使用的建议吗?

<DatePickerIOS
  style={{ paddingTop: 110 }}
  mode='date'
  date={this.state.d}
  onDateChange={(d) => this.onDateChange(d)}
/>

constructor(props) {
 this.state = { date: newDate() };
}

onDateChange(d) {
 this.setState({
  d: d
});

1 个答案:

答案 0 :(得分:0)

您可以在d中设置onDateChange变量的状态,但在startDate S中使用DatePickerIO变量。 看看这个,没有在应用程序中测试但应该工作。

export class PickerIOS extends React.Component {
  constructor() {
    super();
    this.state = {
      pickedDate: null
    }
  }

  componentWillMount() {
    getData('date')
    .then((date) => {
      if (date != null)
        this.setState({pickedDate: date})
      else
        this.setState({pickedDate: new Date()})
    })
  }

  onDateChange(date) {
    setData('date', date)
    this.setState({pickedDate: date})
  }

  render() {
    return (
    <DatePickerIOS
      mode='date'
      date={this.state.pickedDate}
      onDateChange={(date) => this.onDateChange(date)}
      />
    );
  }
}

然后,对于代码组织,在另一个文件中:

setData(key, data) {
  try {
    await AsyncStorage.setItem(key, data);
    } catch (error) {
      // Error saving data
    }
}

getData(key) {
  try {
    const value = await AsyncStorage.getItem(key);
    if (value !== null){
      return value
    }
  } catch (error) {
    // Error retrieving data
  }
}