Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步加载数据和单击下载CSV数据比最新检索的数据落后一步_Javascript_Reactjs_Export To Csv - Fatal编程技术网

Javascript 异步加载数据和单击下载CSV数据比最新检索的数据落后一步

Javascript 异步加载数据和单击下载CSV数据比最新检索的数据落后一步,javascript,reactjs,export-to-csv,Javascript,Reactjs,Export To Csv,使用react csv包,我异步加载数据,然后尝试通过单击从服务器下载检索到的数据。我目前面临的问题是,点击是落后于当前状态的一步。当组件第一次呈现时,它会下载一个空的CSV文件,第二次单击时,它会从上一次获取中下载数据,而不是从当前/最新的获取中下载数据。这与描述的情况相同,但在我的情况下提到的解决方案不起作用:se这是我正在处理的代码: const [newData, setNewData] = useState([]); const csvLink = React.createRe

使用react csv包,我异步加载数据,然后尝试通过单击从服务器下载检索到的数据。我目前面临的问题是,点击是落后于当前状态的一步。当组件第一次呈现时,它会下载一个空的CSV文件,第二次单击时,它会从上一次获取中下载数据,而不是从当前/最新的获取中下载数据。这与描述的情况相同,但在我的情况下提到的解决方案不起作用:se这是我正在处理的代码:

  const [newData, setNewData] = useState([]);
  const csvLink = React.createRef();

   const csvExport = (
    <div>
      <Button className="pull-right title-button" onClick={getData}>
        CSV Export
      </Button>
      <CSVLink data={newData} headers={headers} target="_blank" ref={csvLink}></CSVLink>
    </div>
  );

const getData = async () => {
    await getRetailLinkOutcomes(auth, startDate, endDate, 0, 0, filters, sort, sortDirection, false).then((response) => {
      setNewData(response.records);
      csvLink.current.link.click();
    });
  };
const[newData,setNewData]=useState([]);
const csvLink=React.createRef();
常量csvExport=(
CSV导出
);
const getData=async()=>{
等待GetRetailLink结果(身份验证、开始日期、结束日期、0、0、筛选、排序、排序方向、错误)。然后((响应)=>{
setNewData(response.records);
csvLink.current.link.click();
});
};

您是否能够解决此问题?同样的问题,数据比当前状态落后一步,需要点击两下才能下载正确的数据更新:我通过放置csvLink.current.link.click()解决了我的问题;在useEffect钩子中,该钩子检查数据是否为null,并将其包装在setTimeout中。此处引用:您是否能够解决此问题?同样的问题,数据比当前状态落后一步,需要点击两下才能下载正确的数据更新:我通过放置csvLink.current.link.click()解决了我的问题;在useEffect钩子中,该钩子检查数据是否为null,并将其包装在setTimeout中。此处引用: