#reactjs #use-state
Вопрос:
app.js файл
import React, { useState } from 'react';
import Header from '../header/header';
import Day from '../day/day'
import {BrowserRouter as Router} from 'react-router-dom';
import './app.css';
export default function App() {
const [currentDay, setDay] = useState(new Date());
console.log(currentDay)
function nextDay() {
console.log("next clicked");
let nextDate = new Date(currentDay.getTime());
nextDate = nextDate.setDate(nextDate.getDate() 1);
setDay(nextDate);
}
return (
<>
<Router>
<Header/>
</Router>
<Day
date={currentDay}
nextDay={nextDay}/>
</>
)
}
day.js файл содержит компонент дня
import React from 'react';
import Moment from 'react-moment';
import './day.css';
export default function Day({date, nextDay}) {
return (
<div className="day-container">
<Moment>{date}</Moment>
<span onClick={() => nextDay()}>next</span>
</div>
)
}
После нажатия на кнопку далее объект даты становится меткой времени, а после второго щелчка выдает ошибку(currentDay.getTime не является функцией) Я не понимаю причины этого.
Ответ №1:
Date.prototype.setDate обновляет дату и возвращает значение даты эпохи.
Вам не нужно возвращаемое значение, и вы можете просто:
let nextDate = new Date(currentDay.getTime());
nextDate.setDate(nextDate.getDate() 1);
setDay(nextDate);
Ваша исходная переменная все еще может быть использована.