reactjs FullCalendar React设置加载状态加载事件

js81xvg6  于 2022-12-22  发布在  React
关注(0)|答案(1)|浏览(181)

在我的React应用程序中,我使用的是FullCalendar. io,关于设置Loading状态的文档有点少(而且不是React专用的):https://fullcalendar.io/docs/loading
如果我有:

const [loading, setLoading] = useState(false)

...

{loading ? <Spinner /> : null}

  <FullCalendar
    plugins={[ dayGridPlugin ]}
    initialView="dayGridMonth"
    loading={e => setLoading(e)} // With this line, it continually reloads the data source
    eventSources={[{
        url: '/api/calendar',
        method: 'GET',
      }]}
    />

如果我注解掉上面的加载行,它会很好地工作,但是如果我想在加载时触发一个指示器,它会将数据加载置于一个无限循环中。
这就像每当有什么变化,日历重新获取数据。如果我这样做,它会做同样的事情:

loading={loadingFunction}

以及:

function loadingFunction (boolean) {
    setLoading(boolean)
  }

注意,如果我使用initialEvents,**它不会这样做,**但它提供的灵活性较低。(然后加载按预期工作。)但是使用events或eventSources,它会将其放入加载循环中。

ldioqlga

ldioqlga1#

似乎将其 Package 在useCallback中:

const loadingFunction = useCallback((boolean) => {
    setLoading(boolean)
  },[setLoading])

并将FullCalendar Package 在useMemo中:

const fullCalendar = useMemo( () => <FullCalendar ... />  , [loadingFunction] )

解决了这个问题。希望我没有发现任何缺点...

相关问题