首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:调用dispatch()时,dispatch不是函数错误

TypeError:调用dispatch()时,dispatch不是函数错误
EN

Stack Overflow用户
提问于 2021-08-20 15:37:38
回答 1查看 34关注 0票数 0

我尝试使用useDispatch钩子调用此操作,但它给出了此警告。我也在使用Redux-thunk

ProductScreen.js

代码语言:javascript
复制
import React, { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import Loader from "../Loader";
import Product from "../parts/Products";
import { listProducts } from "../../store/actions/productActions";


import "../../App.css";
import "../parts/Products.css";




function ProductScreen()  {

  const dispatch = useDispatch();
  const productList = useSelector((state)=> state.productList);
  const { loading, products } = productList;

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

  return(
    <div>
      {loading ? (<Loader />) :(
        <div className="row center">
          {products.map((product)=>(
            <Product key={product._id} product={product} />
          ))}
        </div>
      )}
    </div>
  );

  
}

export default ProductScreen;

ProductActions.js

代码语言:javascript
复制
import Axios from 'axios';
import {
    PRODUCT_LIST_REQUEST,
    PRODUCT_LIST_SUCCESS,
    PRODUCT_LIST_FAIL,
    PRODUCT_DETAILS_REQUEST,
    PRODUCT_DETAILS_SUCCESS,
    PRODUCT_DETAILS_FAIL 
} from '../constants/ProductConstant.js';

export const listProducts = ()=> async (dispatch)=> {
    dispatch({
        type: PRODUCT_LIST_REQUEST,
      });
      try {
        const { data } = await Axios.get('/api/products');
        dispatch({ type: PRODUCT_LIST_SUCCESS, payload: data });
      } catch (error) {
        dispatch({ type: PRODUCT_LIST_FAIL, payload: error.message });
      }
}

export const detailsProduct = (productId) => async (dispatch) => {
    dispatch({
      type: PRODUCT_DETAILS_REQUEST,
      payload: productId,
    });
    try {
      const { data } = await Axios.get(`/api/products/${productId}`);
      dispatch({ type: PRODUCT_DETAILS_SUCCESS, payload: data });
    } catch (error) {
      dispatch({
        type: PRODUCT_DETAILS_FAIL, payload: error.response && error.response.data.message ?
          error.response.data.message : error.message,
      });
    }
  };
EN

回答 1

Stack Overflow用户

发布于 2021-08-20 15:52:10

在这里,我解决了从这里删除compose组件的问题,因此,如果您从右到左运行函数,则需要使用compose。

代码语言:javascript
复制
const store = createStore(reducers,initialState, applyMiddleware((thunk)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68864734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档