我有一個場景使用DatePickerIOS組件。該文檔示例包含一個新的Date()並使用狀態來保存和更新Date值。所以,如果我轉到另一個頁面並返回,時間會改變,我需要重置此值。React Native:DatePickerIOS - 如何從其他頁面返回後保留「Date」值
文件用法:
static defaultProps = {
date: new Date()
timeZoneOffsetInHours: (-1) * (new Date()).getTimezoneOffset()/60,
};
state = {
date: this.props.date,
timeZoneOffsetInHours: this.props.timeZoneOffsetInHours,
};
onDateChange(date) {
this.setState({date: date});
};
render(){
return(
<View style={styles.wrap}>
<View style={styles.datePickerIOS}>
<DatePickerIOS
date={this.state.date}
mode="time"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
minuteInterval={10}
/>
</View>
我嘗試使用的道具,堅持這個數據到本地存儲。
static defaultProps = {
date: new Date()
timeZoneOffsetInHours: (-1) * (new Date()).getTimezoneOffset()/60,
};
state = {
date: this.props.date,
timeZoneOffsetInHours: this.props.timeZoneOffsetInHours,
};
componentWillMout() {
this.props.updateDate(this.props.date)
}
onDateChange(date) {
this.setState({date: date});
this.props.updateDate(date)
};
render(){
return(
<View style={styles.wrap}>
<View style={styles.datePickerIOS}>
<DatePickerIOS
date={this.props.alarmConfig.date}
mode="time"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
minuteInterval={10}
/>
</View>
updateDate(日期)是一款動作
export function updateDate(date){
return {
type: "UPDATE_DATE",
date: date,
}
}
export function alarmConfig(state=initialState, action){
switch(action.type) {
case types.UPDATE_DATE:
return {
...state,
date: action.date
};
,如果我不喜歡的是,alarmConfig.date下的值是一個字符串,所以我得到一個錯誤,因爲DatePickerIOS日期的道具需要日期類型。
,如果我只是改變象下面這樣:
<DatePickerIOS
date={this.state.date}
mode="time"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
onDateChange={this.onDateChange.bind(this)}
minuteInterval={10}
/>
alarmConfig.date下的值是一個日期,同與state.date
什麼原因,到底是什麼造成這種情況呢?以及如何更改代碼以達到我的目的?
謝謝大家。