为了账号安全,请及时绑定邮箱和手机立即绑定

在 setState 上使用 JavaScript Date 对象时,React hook

在 setState 上使用 JavaScript Date 对象时,React hook

大话西游666 2023-06-09 15:35:18
我已经使用 React hook 创建了一个日期对象,useState如下所示:  const [selectedDate, setselectedDate] = useState(new Date());我有一个更新对象日期的函数:  const handleDayChange = (increment) => {    let dateWillUpdate = selectedDate;    date.setDate(selectedDate.getDate() + increment);    setselectedDate(dateWillUpdate);  };对象已更新,但 UI 未更新。所以我尝试了另一种方法,就是像这样分配日期对象:let dateWillUpdate = {...selectedDate};但这给了我一个空对象:object:{}我正在使用此功能渲染日期:const renderDaySelector = () => {    return (      <View style={styles.selector}>        <View style={[styles.fieldContainer, { flex: 1 }]}>          <TouchableOpacity onPress={() => handleDayChange(1)}>            <MaterialCommunityIcons              name="chevron-up"              color={Colors.primary}              size={30}            />          </TouchableOpacity>          <View style={[styles.field]}>            <TextInput              style={styles.textField}              keyboardType="number-pad"              value={selectedDate.getDate().toString()}            />          </View>         ...    );  };我在函数组件的主要返回中调用它:return (...            <View style={styles.values}>{renderDaySelector()}</View>...)调用时如何让 UI 更新handleDayChange()功能?谢谢。
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你不应该直接改变你的状态。在这种情况下,您需要创建一个新Date对象才能正确更新您的状态。


您可以尝试使用new Date()创建一个新对象作为:


let dateWillUpdate = new Date(selectedDate)


// or you use:

let dateWillUpdate = new Date(selectedDate.getTime())


查看完整回答
反对 回复 2023-06-09
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信