当前位置:首页 > React

react如何感知token变化了

2026-01-25 09:09:35React

监听Token变化的常见方法

在React中,可以通过以下几种方式感知Token的变化:

使用Context API 创建一个AuthContext来管理Token状态,并通过Provider将Token传递给子组件。子组件通过useContext钩子监听Token变化。

const AuthContext = createContext();

function AuthProvider({ children }) {
  const [token, setToken] = useState(localStorage.getItem('token'));

  const value = {
    token,
    setToken: (newToken) => {
      localStorage.setItem('token', newToken);
      setToken(newToken);
    }
  };

  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
}

function ChildComponent() {
  const { token } = useContext(AuthContext);
  // token变化时会触发重新渲染
}

使用状态管理库 在Redux或MobX等状态管理库中存储Token,组件通过connect或useSelector订阅Token状态。

react如何感知token变化了

// Redux示例
const mapStateToProps = (state) => ({
  token: state.auth.token
});

export default connect(mapStateToProps)(Component);

使用自定义事件 通过window.dispatchEvent和window.addEventListener实现全局事件监听。

// 设置Token时触发事件
const setToken = (newToken) => {
  localStorage.setItem('token', newToken);
  window.dispatchEvent(new Event('tokenChange'));
};

// 组件中监听
useEffect(() => {
  const handleTokenChange = () => {
    const newToken = localStorage.getItem('token');
    // 处理Token变化
  };

  window.addEventListener('tokenChange', handleTokenChange);
  return () => window.removeEventListener('tokenChange', handleTokenChange);
}, []);

存储Token的最佳实践

将Token存储在内存中比localStorage更安全,但页面刷新后会丢失。可以考虑以下方案:

react如何感知token变化了

  • 内存存储 + localStorage备份
  • 使用httpOnly的Cookie存储
  • 使用sessionStorage替代localStorage

Token过期处理

通过拦截器或高阶组件检查Token有效期:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      // Token过期处理逻辑
    }
    return Promise.reject(error);
  }
);

性能优化建议

对于频繁使用Token的组件,考虑使用React.memo避免不必要的重新渲染:

const MemoizedComponent = React.memo(function Component({ token }) {
  // 组件实现
});

通过合理选择上述方法,可以有效地在React应用中感知和管理Token的变化。

标签: reacttoken
分享给朋友:

相关文章

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

react 如何获取dom

react 如何获取dom

获取 DOM 的方法 在 React 中,可以通过 useRef 或 createRef 来获取 DOM 节点。useRef 是函数组件中常用的方法,而 createRef 通常用于类组件。 使用…

小白如何搭建react

小白如何搭建react

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网下载安装包(https://nodejs.org/),选择 LTS 版本。安装完成后,终端运行以下命令验证版…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…

如何运行react项目

如何运行react项目

运行React项目的步骤 确保已安装Node.js(建议版本12或更高)和npm/yarn。若未安装,可从Node.js官网下载。 全局安装create-react-app脚手架工具(若已安装可跳过…