当前位置:首页 > React

react thunk 如何使用

2026-03-30 23:49:57React

安装 Redux Thunk

确保项目中已安装 redux-thunkredux。通过 npm 或 yarn 安装:

npm install redux-thunk redux

配置 Redux Store

在创建 Redux store 时,使用 applyMiddlewarethunk 作为中间件注入:

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

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

编写 Thunk Action

Thunk action 是一个返回函数的函数,接收 dispatchgetState 作为参数。常用于异步操作(如 API 调用):

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

在组件中 Dispatch Thunk

在 React 组件中,通过 useDispatchconnect 分发 thunk action:

import { useDispatch } from 'react-redux';
import { fetchUserData } from './actions';

function UserComponent({ userId }) {
  const dispatch = useDispatch();
  useEffect(() => {
    dispatch(fetchUserData(userId));
  }, [userId, dispatch]);
  return <div>Loading user data...</div>;
}

处理异步状态

在 reducer 中根据 action 类型更新状态,通常包含加载、成功和错误状态:

const initialState = {
  loading: false,
  user: null,
  error: null,
};

function userReducer(state = initialState, action) {
  switch (action.type) {
    case 'FETCH_USER_REQUEST':
      return { ...state, loading: true };
    case 'FETCH_USER_SUCCESS':
      return { ...state, loading: false, user: action.payload };
    case 'FETCH_USER_FAILURE':
      return { ...state, loading: false, error: action.error };
    default:
      return state;
  }
}

结合 Redux DevTools

如需使用 Redux DevTools 扩展,需在 store 创建时组合中间件:

react thunk 如何使用

import { composeWithDevTools } from 'redux-devtools-extension';

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

分享给朋友:

相关文章

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。…

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。 第二个音节…

vscode如何配置react

vscode如何配置react

配置 VSCode 进行 React 开发 安装必要插件 ES7+ React/Redux/React-Native snippets:提供 React 代码片段快速生成功能。 Prettier -…

react如何使用路由

react如何使用路由

使用 React Router 的基本方法 React Router 是 React 应用中实现路由功能的核心库。以下是基本使用方法: 安装 React Router 依赖包: npm insta…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…