【发布时间】:2021-04-21 20:34:57
【问题描述】:
我有一个非常简单的功能组件,它从 localStorage 获取日期并显示它。我有两个按钮可以从日期中添加或删除周数,并且我希望显示新日期。但是,组件不会被渲染。
import React, { useState } from "react";
import { monthList } from "../common/lists";
const Navbar = () => {
const [focusDate, setFocusDate] = useState(
Number(localStorage.getItem("focusDate"))
);
const [month] = useState(new Date(focusDate).getMonth());
const [year] = useState(new Date(focusDate).getFullYear());
const onLeftClick = () => {
setFocusDate(focusDate - 504000000); //one week
localStorage.setItem("focusDate", focusDate);
};
const onRightClick = () => {
setFocusDate(focusDate + 504000000);
localStorage.setItem("focusDate", focusDate);
};
return (
<div className="navbar-container">
<div className="calendar-navigation-container">
<div className="navbar-menu-item">
<i onClick={onLeftClick} className="fas fa-chevron-left"></i>
</div>
<div onClick={onRightClick} className="navbar-menu-item">
<i className="fas fa-chevron-right"></i>
</div>
<div className="calendar-year">{`${monthList[month]} ${year}`}</div>
</div>
</div>
);
};
此组件的预期行为是它获取时间戳,然后显示该时间戳的月份和年份。加载后,它正确显示 2021 年 1 月,但是当我在 onLeftClick 上单击几次时它不会呈现组件,尽管我希望它显示 2021 年 12 月。计算是正确的,我想我在这里遗漏了功能组件渲染。使用 Class 组件会容易得多,但我也想学习函数式组件。我在这里错过了什么?
【问题讨论】:
标签: javascript reactjs