-
{
// 加载事件列表
const loadEvents = useCallback(async (page = 1) => {
+ console.log('[Community] loadEvents 被调用,页码:', page);
+ console.log('[Community] 调用栈:', new Error().stack);
setLoading(true);
try {
const filters = getFiltersFromUrl();
@@ -254,12 +256,17 @@ const Community = () => {
});
// 初始化加载
+ // 注意: 只监听 searchParams 变化,不监听 loadEvents 等函数
+ // 这是为了避免 StockDetailPanel 打开时触发不必要的重新加载
+ // 如果未来 loadEvents 添加了新的状态依赖,需要在此处同步更新
useEffect(() => {
+ console.log('[Community] useEffect 触发,searchParams 变化:', searchParams.toString());
const page = parseInt(searchParams.get('page') || '1', 10);
loadEvents(page);
loadPopularKeywords();
loadHotEvents();
- }, [searchParams, loadEvents, loadPopularKeywords, loadHotEvents]);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [searchParams]); // 只监听 URL 参数变化