React JS:刷新状态常量后我的页面不刷新

React JS: My page doesn't refresh after my state constant was refresh

我有一个问题,因为当我使用我的函数 setEvents 更新我的状态事件的值(使用我的 setEvents 函数)时,我的页面没有刷新。

看这里:

function App() {
  const [events, setEvents] = useState([]);
  const clickDate = (e)=>{
    const newEvents = events
    const event = {
      id: 'test',
      title: 'my event',
      start: e.dateStr
    }
    newEvents.push(event);
    setEvents(newEvents);
    console.log(events);
  }

  return (
    <div className="App">
      <FullCalendar
        plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}
        initialView='timeGridWeek'
        weekends = {weekEnd}
        selectable = {true}
        allDaySlot = {false}
        eventConstraint = "businessHours"
        dateClick = {clickDate}
        events = {events}

      />
    </div>
  );
}

export default App;

我的“console.log(events)”在使用我的 clickDate 函数后正确显示了新事件,但页面没有刷新。

有人有什么建议吗?

谢谢大家!

从技术上讲,您在这里改变状态:

newEvents.push(event);

这有点隐藏在一些 over-complicated 逻辑中,只是为了设置一个新的状态值。当你更新状态时,它是对同一个数组的引用(你现在已经改变了)。

简化您的工作。将状态更新为由前一个元素加上新元素构成的新数组:

const clickDate = (e)=>{
  setEvents([...events, {
    id: 'test',
    title: 'my event',
    start: e.dateStr
  }]);
}