当前位置:首页 > React

react thunk 如何使用

2026-01-16 09:05:41React

使用 React Thunk 的基本步骤

安装 Redux 和 Redux Thunk 作为依赖项:

npm install redux redux-thunk

在 Redux store 配置中应用 Thunk 中间件:

react thunk 如何使用

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';

const store = createStore(
  rootReducer,
  applyMiddleware(thunk)
);

编写异步 Action Creator

Thunk 允许 action creator 返回函数而非普通 action 对象。函数接收 dispatchgetState 作为参数:

const fetchUserData = (userId) => {
  return (dispatch) => {
    dispatch({ type: 'FETCH_USER_REQUEST' });
    fetch(`https://api.example.com/users/${userId}`)
      .then(response => response.json())
      .then(data => dispatch({ type: 'FETCH_USER_SUCCESS', payload: data }))
      .catch(error => dispatch({ type: 'FETCH_USER_FAILURE', error }));
  };
};

在组件中调用异步 Action

通过 dispatch 调用异步 action,与同步 action 使用方式一致:

react thunk 如何使用

import { useDispatch } from 'react-redux';

function UserComponent({ userId }) {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchUserData(userId));
  }, [dispatch, userId]);
}

处理复杂异步逻辑

Thunk 支持多级异步操作或条件调度。例如链式请求:

const fetchUserAndPosts = (userId) => {
  return async (dispatch) => {
    const user = await fetchUser(userId);
    dispatch({ type: 'SET_USER', payload: user });
    const posts = await fetchPosts(user.id);
    dispatch({ type: 'SET_POSTS', payload: posts });
  };
};

访问当前状态

通过 getState 参数可获取当前 Redux 状态,实现条件调度:

const loadDataIfNeeded = () => {
  return (dispatch, getState) => {
    const { isLoading } = getState().user;
    if (!isLoading) {
      dispatch(fetchUserData());
    }
  };
};

分享给朋友:

相关文章

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

react 如何遍历

react 如何遍历

遍历数组 在React中遍历数组通常使用map方法,它会返回一个新的数组。map是处理数组并渲染列表元素的首选方法。 const items = ['Apple', 'Banana', 'Cherr…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

如何清洁react

如何清洁react

清洁 React 项目的方法 删除未使用的依赖项 运行 npm ls 或 yarn list 检查已安装的依赖项,使用 npm uninstall <package> 或 yarn rem…