在 swr 中获取新数据时避免加载状态

问题描述

每当我使用不同的查询参数在 swr 中请求新数据(即单击上一个和下一个按钮)时,就会在我的代码中触发加载。这意味着数据似乎被清除,然后被新数据替换。怎样才能做到只用新数据替换旧数据,从而不触发加载?

component.ts

class Address {
  final int FID;
  final String addr;

  Address(this.addr,this.FID);

  Address.fromMap(Map m)
      : this.addr = m["Adresse"],this.FID = m["FID"];
}

static Future<List<Address>> loadJsonData() async {
    var jsonText = await rootBundle.loadString('assets/Json/CDV.json');
    data = json.decode(jsonText);
    var list = [];
    for(int i = 0; i < data.length; i++){
      list.add(Address.fromMap(data[i]["attributes"]);
    }
    
    return list;
  }

taskService.ts

import React,{ useState } from "react";
import { cloneDeep } from "lodash";

import Day from "components/Day";
import DragDropContext from "shared/components/DragDropContext";
import Loading from "shared/components/Loading";
import task from "services/taskService";
import { DragEndResult,ITaskList } from "types";
import { addDays } from "utils/dateTime";

import styles from "./Days.module.scss";

const Days = () => {
  const firstDay = addDays(new Date(),-1);
  const [dates,setDates] = useState({
    start: firstDay,end: addDays(firstDay,4)
  })

  const { data: taskLists,mutate } = task.current(dates.start,dates.end);

  const handleArrowClick = async (direction: "prev" | "next") => {
    if(direction === "next") {
     setDates({
       start: addDays(dates.start,1),end: addDays(dates.end,});
    } else if (direction === "prev") {
      setDates({
       start: addDays(dates.start,-1),});
    }
  }

  return (
    <>
      {!taskLists && <Loading />}
      <div className={styles.days}>
        <div className={styles.prev} onClick={() => handleArrowClick("prev")}>
          <div className={styles.arrow}></div>
        </div>
        <div className={styles["days__slide"]}>
          <DragDropContext onDragEnd={handleDragEnd}>
            {taskLists &&
              Object.values(taskLists).map((taskList: ITaskList) => {
                return (
                  <Day
                    key={taskList.date}
                    onAddTask={handleAddTask}
                    onRemove={handleRemoveTask}
                    {...taskList}
                  />
                );
              })}
          </DragDropContext>
        </div>
        <div className={styles.next} onClick={() => handleArrowClick("next")}>
          <div className={styles.arrow}></div>
        </div>
      </div>
    </>
  );
};

export default Days;


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...