页面逻辑: 根据条件筛选数据,条件: 项目 和 起止日期,项目在加载时设置默认值,起止日期设置默认值。
const [project, setProject] = useState('aaa');
const [duration, setDuration] = useState([moment(), moment()]);
页面加载时:
useEffect(()=>{
getProjectList();
}, [])
属性变更时:
useEffect(()=>{
fetchPreviewData(project, duration);
}, [project, duration])
问题一: 页面加载时,会执行两次fetch操作,原因是,project 和 duration 都触发了set操作。
问题2:请求时序问题。
选择项目 ---》 发出请求1 --》 变更起止日期 --》 发出请求2 ---》 请求2返回数据 ---》 加载数据 ---》 请求1返回数据 ---》 再次加载数据。
最后加载的数据为请求1的内容,所以数据不正确。
问题一:
问题二的解决方案: