javascript - 仅更新我更改其他状态的日期不应更新或更改 ReactJS/React-Hooks
问题描述
通过 react hooks 的新概念,我想发布一些我正在使用 useState 未来的数据,所以当我更改日期时,其他日期也会更新我选择的内容。我希望它只更新相关日期。如果我改变 planRegisterStartDate 所以其他人不应该影响我怎么能做到这一点我 usereact-datepicker 包
const [planGroupData, setPlanGroupData] = useState({
planGroupName: '',
PlanGroupYear: '',
planRegisterStartDate: new Date(),
planRegisterFinishDate: new Date(),
projeRegisterStartDate: new Date(),
projeRegisterFinishDate: new Date()
})
const onPlanGroupDateChange = date => {
setPlanGroupData({
planRegisterStartDate: date,
planRegisterFinishDate: date,
projeRegisterStartDate: date,
projeRegisterFinishDate: date
})
}
const {
PlanGroupYear,
planGroupName,
planRegisterFinishDate,
planRegisterStartDate,
projeRegisterFinishDate,
projeRegisterStartDate
} = planGroupData
return (
<div className='form-row'>
<DatePicker
selected={planRegisterStartDate}
onChange={onPlanGroupDateChange}
/>
<DatePicker
selected={planRegisterFinishDate}
onChange={onPlanGroupDateChange}
/>
</div>
)
解决方案
您可以分离您的状态并单独定义集合函数,然后您可以在它们各自的组件中调用这些函数。在我看来,这将更易于管理。
const [planGroupName, setPlanGroupName] = useState(null)
const [planGroupYear, setPlanGroupYear] = useState(null)
const [planRegisterStartDate, setPlanRegisterStartDate] = useState(new Date())
const [planRegisterFinishDate, setPlanRegisterFinishDate] = useState(new Date())
const [projeRegisterStartDate, setProjeRegisterStartDate] = useState(new Date())
const [projeRegisterFinishDate, setProjeRegisterFinishDate] = useState(new Date())
<DatePicker selected={planRegisterStartDate}
onChange={date => setPlanRegisterStartDate(date)} />
<DatePicker selected={planRegisterFinishDate}
onChange={date => setPlanRegisterFinishDate(date)} />
推荐阅读
- node.js - 禁用/覆盖 bodyparser 行为
- c++ - C++ 编译如何处理共享库和模板
- android - 使用 Kotlin 在片段中创建 AlertDialog
- php - 在 CSV 文件的所有字段中插入双引号 (PHP5.6.38)
- mysql - 访问mysql Pool ojbect的PoolConfig的数据库成员
- javascript - 如何获取用户选择的单词的单词编号
- java - Space complexity of the piece of code below?
- c# - 为什么我无法加载 DLL 'libgdiplus':找不到指定的模块 - CentOS 7.5
- c# - 访问多维 stdClassObject - 数组
- kubernetes - 在 kubeflow 上找不到 GOOGLE_APPLICATION_CREDENTIALS