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

React-Redux中Action未触发Reducer问题求助(附代码)

问题分析与解决方案

我一眼就看出问题所在啦——你在组件里直接调用了原始的getRooms()函数,但没有使用connect注入到组件props中的那个被包装过的版本!

为什么会出现这个问题?

你的getRooms是一个返回thunk函数的action creator(就是里面那个return dispatch => {...}的部分)。redux-thunk中间件的作用是让Redux能够处理这种返回函数的action,但前提是你要通过Redux的dispatch来触发它。

而你通过connect(null, { getRooms })把getRooms映射到组件props时,react-redux已经自动把这个action creator包装成了一个会自动调用dispatch的函数。但你现在直接调用getRooms(),只是拿到了那个thunk函数本身,并没有执行它,所以只会打印reach action,后面的异步请求和dispatch逻辑根本没机会运行。

修正后的代码

只需要把handleRooms里的调用改成使用props中的版本就行:

class ConnectionsList extends Component {
  handleRooms = () => {
    // 调用props里被包装过的getRooms,而非直接调用导入的原始函数
    this.props.getRooms()
  }
  // ... 其他代码保持不变
}

这样修改后,当你点击图标时,就会触发被redux-thunk包装过的action creator,它会自动执行内部的dispatch逻辑,发起请求并把结果dispatch到reducer里。

另外可以再确认下:你的store确实已经正确配置了redux-thunk中间件(你提到其他action运行正常,这一步应该没问题),所以修改完调用方式后,应该就能正常工作了。

内容的提问来源于stack exchange,提问作者M.Amer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:40:51