Поскольку у вас нет сложных логик c для обновления состояния, лучшим подходом для вас будет использование объекта для хранения нескольких состояний. Чтобы упростить ваше решение, вы можете написать собственный хук, который объединяет состояние перед обновлением, чтобы вам не приходилось беспокоиться об этом при обновлении состояния
const useMergedState = (initialVal) => {
const [value, setValue] = useState(initialVal);
const setMergedValue = useCallback((updatedValue) => {
setValue(prev => ({
...prev,
...updatedValue,
}))
}, []);
return [value, setMergedValue] ;
}
и использовать его как
const [state, setState] = useMergedState({
startTime: "",
endTime: new Date(),
dutyCode: "",
dutyType: new Date(),
});
и обновлять как
setState({startTime: new Date()});