You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React登录项目Redux-Thunk导入错误求助:代码问题排查

React-Redux登录功能错误排查与修复

核心错误解决:redux-thunk导入问题

你遇到的export 'default' (imported as 'thunk') was not found in 'redux-thunk'错误,是因为redux-thunk v3.x版本采用ES模块规范,不再提供默认导出,只能使用命名导入。

修改src/middleware/store.js的导入代码:

// src/middleware/store.js
import { createStore, applyMiddleware } from 'redux';
// 替换默认导入为命名导入
import { thunk } from 'redux-thunk';
import rootReducer from './reducers';

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

export default guard;

其他潜在问题修复

1. 登录失败状态未更新

当前登录失败时仅打印日志,未触发LOGIN_FAILURE action,导致状态无法同步更新。修改src/middleware/actions.js的catch逻辑:

// src/middleware/actions.js
catch (error) {
  console.error('Login error:', error);
  console.log('Gagal login');
  // 新增登录失败的action dispatch
  dispatch({
    type: 'LOGIN_FAILURE',
    payload: error.message || '登录失败'
  });
}

2. Token存储路径可能错误

接口返回的token路径response.data.data.token与user的response.data.user结构不一致,需根据实际接口返回调整,例如如果token直接在response.data.token,则修改为:

localStorage.setItem('token', response.data.token);

3. React Router v6变量命名规范

useNavigate返回的是导航函数,并非history对象,建议修改变量名避免混淆:

// src/pages/login/index.js
// 替换history为navigate
const navigate = useNavigate();

// 跳转逻辑同步修改
navigate('/admin/dashboard');

4. 添加路由保护(可选)

当前未对Dashboard页面做登录校验,可新增PrivateRoute组件限制未登录用户访问:

// src/components/PrivateRoute.js
import React from 'react';
import { Navigate } from 'react-router-dom';
import { useSelector } from 'react-redux';

const PrivateRoute = ({ children }) => {
  const { isAuthenticated } = useSelector(state => state.auth);
  return isAuthenticated ? children : <Navigate to="/" />;
};

export default PrivateRoute;

修改Router.js应用路由保护:

// src/Router.js
import PrivateRoute from './components/PrivateRoute';

// ...
<Route path="/admin/dashboard" element={
  <PrivateRoute>
    <DashboardPage />
  </PrivateRoute>
} />
// ...

内容的提问来源于stack exchange,提问作者Ujang Aripin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:35:08