axios 当用户离开你的页面时,如何在端点发送数据?

qc6wkl3g  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(130)

当用户离开我的页面或浏览器时,我需要发送一些数据。我应该使用哪些事件?我使用react和axios,也许有一些方法可以做到这一点。
我尝试使用unload,beforeunload和onbeforeunload事件,但它定期工作。有时它发送数据,但当我再次尝试时,它不起作用。我不需要弹出/警报选项卡“要求用户确认是否关闭选项卡”,当页面即将关闭时出现。

bnlyeluc

bnlyeluc1#

我认为当你想在用户离开你的页面或关闭浏览器时发送数据时,beforeunload事件是一种常用的方法。
使用beforeunload事件可以在某些浏览器中触发确认对话框,并且没有保证网络请求完成的时间。
另一种方法是使用unload事件,该事件在页面卸载之前触发。请记住,与beforeunload类似,unload事件在发送数据的可靠性方面也受到限制。
我使用unload添加示例代码:

import React, { useEffect } from 'react';
import axios from 'axios';

const MyComponent = () => {
  useEffect(() => {
    const cleanup = async () => {
      try {
        await axios.post('your-api-endpoint', { yourData });
      } catch (error) {
        console.error('Error sending data on unload:', error);
      }
    };

    window.addEventListener('unload', cleanup);

    return () => {
      cleanup();
      window.removeEventListener('unload', cleanup);
    };
  }, []);

  return (
    <div>
      {/* Your component content */}
    </div>
  );
};

export default MyComponent;

字符串

相关问题