当前位置:首页 > React

react如何附带tokens

2026-02-26 08:20:27React

在React中附带tokens(如认证令牌)通常用于API请求的身份验证。以下是几种常见的方法:

使用axios发送请求附带token

通过axios的拦截器或请求配置,可以在请求头中添加token。例如:

import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com',
});

api.interceptors.request.use((config) => {
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// 使用api实例发送请求
api.get('/user').then(response => console.log(response));

使用fetch API附带token

fetch API可以通过手动设置请求头来附带token:

fetch('https://api.example.com/user', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('token')}`,
    'Content-Type': 'application/json',
  },
})
.then(response => response.json())
.then(data => console.log(data));

封装自定义hook

可以创建一个自定义hook来统一处理附带token的逻辑:

import { useState, useEffect } from 'react';

function useApi(url) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchData = async () => {
      const response = await fetch(url, {
        headers: {
          'Authorization': `Bearer ${localStorage.getItem('token')}`,
        },
      });
      const result = await response.json();
      setData(result);
      setLoading(false);
    };
    fetchData();
  }, [url]);

  return { data, loading };
}

使用context管理token

通过React的Context API全局管理token,避免重复从存储中读取:

import { createContext, useContext } from 'react';

const AuthContext = createContext();

function AuthProvider({ children }) {
  const token = localStorage.getItem('token');

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

function useAuth() {
  return useContext(AuthContext);
}

// 在组件中使用
function ProtectedComponent() {
  const { token } = useAuth();
  // 使用token发送请求
}

使用高阶组件(HOC)

对于类组件,可以通过高阶组件自动注入token:

react如何附带tokens

function withAuth(WrappedComponent) {
  return function(props) {
    const token = localStorage.getItem('token');
    return <WrappedComponent {...props} token={token} />;
  };
}

// 使用高阶组件
class UserProfile extends React.Component {
  componentDidMount() {
    // 使用this.props.token发送请求
  }
}

export default withAuth(UserProfile);

标签: reacttokens
分享给朋友:

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何循环

react如何循环

循环渲染列表 在React中循环渲染列表通常使用map方法,这是最常用的方式。通过map可以将数组中的每个元素转换为React元素并渲染到页面上。 const items = ['Apple', '…