React Native Hooks设置初始日期后重进编辑页无法显示更新值如何处理
实现方案
你只需要给useState的初始值增加优先级判断逻辑:优先读取路由传递的date参数,参数不存在时才回退到18岁对应的默认日期即可,修改后的代码如下:
const [date, setDate] = useState(route.params?.date ?? new Date(Date.now() - (9467880 * 60 * 1000)));
如果你的应用中编辑资料页会被缓存(比如使用React Navigation时页面推入栈后不会销毁),还需要额外监听路由参数的变化,避免参数更新后state没有同步:
import { useEffect } from 'react'; // 原有state声明 const [date, setDate] = useState(route.params?.date ?? new Date(Date.now() - (9467880 * 60 * 1000))); // 新增参数监听逻辑 useEffect(() => { if (route.params?.date) { setDate(route.params.date); } }, [route.params?.date]);
注意事项
- 从资料页跳转到编辑资料页时,必须把用户最新的出生日期作为路由参数传递,示例跳转代码如下:
navigation.navigate('EditProfile', { date: 当前用户存储的最新出生日期变量 }) - 空值合并运算符
??仅在route.params.date为undefined或null时才会使用后面的默认值,避免了0、空字符串等假值被错误覆盖的问题。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

