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

使用Rematch/Redux开发时调用API后无法正确获取展示state问题求助

问题排查及修复方案

核心问题

你没有在组件生命周期中触发loadProducts异步方法,导致API请求从未执行,state一直停留在初始空数组状态,同时存在useEffect无依赖导致重复执行、mapDispatchToProps写法不规范的问题。

修复步骤

1. 调整组件代码

import './App.css';
import { connect } from 'react-redux';
import React, { useEffect } from 'react';

const mapStateToProps = ({ products }) => {
  return {
    products: products.products
  }
}

// 按Rematch规范从dispatch中取对应model的方法
const mapDispatchToProps = (dispatch) => {
  return {
    loadProducts: dispatch.products.loadProducts
  }
}

const App = ({ products, loadProducts }) => {
  // 组件挂载时触发一次数据加载,依赖数组置空避免重复调用
  useEffect(() => {
    loadProducts()
  }, [loadProducts])

  // 监听products变化打印,仅当products更新时执行
  useEffect(() => {
    console.log(products)
  }, [products])

  return (
    <div className="App">
      {/* 示例渲染逻辑,可按实际业务调整 */}
      {products.map(item => (
        <div key={item.id}>{item.title}</div>
      ))}
    </div>
  )
}

export default connect(mapStateToProps, mapDispatchToProps)(App);

2. 可选校验项(如果仍有问题可逐一核对)

  • 确认Rematch初始化时已正确注册products model:
import { init } from '@rematch/core'
import products from './models/products'

export const store = init({
  models: {
    products
  }
})
  • 确认入口文件已用Provider包裹根组件并传入正确store:
import React from 'react'
import ReactDOM from 'react-dom/client'
import { Provider } from 'react-redux'
import { store } from './store'
import App from './App'

ReactDOM.createRoot(document.getElementById('root')).render(
  <Provider store={store}>
    <App />
  </Provider>
)

内容的提问来源于stack exchange,提问作者Mario Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:51:01