我正在尝试更新我的状态,但是与此同时,当我在控制台中控制台更新状态值时,它会提示我您的状态值为undefined
。有人可以帮助我解决这个问题。我正在使用rc-time-picker
来选择时间并将所选时间存储在本地存储中,但是它没有更新状态值
谢谢
代码
import 'rc-time-picker/assets/index.css';
import React, { Component } from 'react';
import TimePicker from 'rc-time-picker';
import moment from 'moment';
const format = 'h:mm a';
const now = moment().hour(0).minute(0);
class Time extends Component {
constructor(){
super();
this.state={
value : ''
}
}
newHandleChange=(value)=>{
this.setState({
value: localStorage.setItem("currentTime",value.format('h:mm a'))
})
}
render(){
console.log("state data",this.state.value)
return(
<div>
<TimePicker
showSecond={false}
defaultValue={now}
className="xxx"
onChange={this.newHandleChange}
format={format}
use12Hours
inputReadOnly
fieldName="time"
/>
</div>
)
}
}
export default Time;
答案 0 :(得分:2)
获取undefined
的原因是因为您正在使用通过调用localStorage.setItem
返回的值undefined
来设置新状态。
这是您需要做的:
class Time extends Component {
constructor(props) {
super(props)
this.state = { value: '' }
}
// ...
newHandleChange = (value) => {
const time = value.format('h:mm a')
localStorage.setItem('currentTime', time)
this.setState({
value: time
})
}
}
这样,您可以将新时间保存到变量中,并使用它来更新组件{{1}中的currentValue
和组件中的localStorage
。
答案 1 :(得分:1)
在state
中初始化constructor
时,应将props
传递给super
:
constructor(props){
super(props);
this.state={
value : ''
}
}
您获得的undefined
仅仅是getItem()
的结果
答案 2 :(得分:-1)
您需要为状态设置适当的值,请检查以下代码
state
答案 3 :(得分:-1)
尝试使用此`
newHandleChange =val=> {
const value=localStorage.setItem('currentTime', val.format('h:mm a'))
this.setState({
value
})
}`