我正在使用Redux工具包制作一个Reaction应用程序来进行状态管理,这里我收到了错误消息

app_api_apiSlice__WEBPACK_IMPORTED_MODULE_1_.useGetFilterProductsByCategoriesQuery 不是函数 ProductList@http://localhost:3000/static/js/bundle.js:781:108 RenderWithHooks@http://localhost:3000/static/js/bundle.js:33691:31 UpdateFunctionComponent@http://localhost:3000/static/js/bundle.js:36573:24 BeginWork@http://localhost:3000/static/js/bundle.js:38285:20 CallCallback@http://localhost:3000/static/js/bundle.js:23283:18 InvokeGuardedCallbackDev@http://localhost:3000/static/js/bundle.js:23327:20 InvokeGuardedCallback@http://localhost:3000/static/js/bundle.js:23384:35 BeginWork$1@http://localhost:3000/static/js/bundle.js:43258:32 PerformUnitOfWork@http://localhost:3000/static/js/bundle.js:42505:16 WorkLoopSync@http://localhost:3000/static/js/bundle.js:42428:26 RenderRootSync@http://localhost:3000/static/js/bundle.js:42401:11 PerformSyncWorkOnRoot@http://localhost:3000/static/js/bundle.js:42093:38 FlushSyncCallbacks@http://localhost:3000/static/js/bundle.js:30123:26 FlushSyncCallbacksOnlyInLegacyMode@http://localhost:3000/static/js/bundle.js:30105:9 BatchedUpdates$1@http://localhost:3000/static/js/bundle.js:42149:11 BatchedUpdates@http://localhost:3000/static/js/bundle.js:23131:16 DispatchEventForPluginEventSystem@http://localhost:3000/static/js/bundle.js:27747:21 DispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay@http://localhost:3000/static/js/bundle.js:25253:42 DispatchEvent@http://localhost:3000/static/js/bundle.js:25247:88 DispatchDiscreteEvent@http://localhost:3000/static/js/bundle.js:25224:22 EventListener.h和leEvent*addEventBubbleListener@http://localhost:3000/static/js/bundle.js:25446:14 AddTrappedEventListener@http://localhost:3000/static/js/bundle.js:27670:33 ListenToNativeEvent@http://localhost:3000/static/js/bundle.js:27614:30 ./node_modules/react-dom/cjs/react-dom.development.js/listenToAllSupportedEvents/<@http://localhost:3000/static/js/bundle.js:27625:34 ListenToAllSupportedEvents@http://localhost:3000/static/js/bundle.js:27620:25 LegacyCreateRootFromDOMContainer@http://localhost:3000/static/js/bundle.js:45064:35 LegacyRenderSubtreeIntoContainer@http://localhost:3000/static/js/bundle.js:45088:16 Render@http://localhost:3000/static/js/bundle.js:45153:14 ./src/index.js@http://localhost:3000/static/js/bundle.js:959:50 Options.factory@http://localhost:3000/static/js/bundle.js:73591:31 webpack_require@http://localhost:3000/static/js/bundle.js:73036:33@http://localhost:3000/static/js/bundle.js:74173:56 @http://localhost:3000/static/js/bundle.js:74175:12

我的代码如下

import React from 'react';
import { Container, Row, Col, Card, Button } from 'react-bootstrap';


import { useGetProductsQuery, useGetFilterProductsQuery, useGetFilterProductsByCategoriesQuery } from '../../app/api/apiSlice';

import { useSelector } from 'react-redux';

function ProductList() {


  const selectedCategories = useSelector(state => state.filters.selectedCategories);
  const minPrice = useSelector(state => state.filters.minPrice);
  const maxPrice = useSelector(state => state.filters.maxPrice);


  let productQuery;

   if (minPrice && maxPrice) {
    alert(minPrice + " " + maxPrice);
    productQuery = useGetFilterProductsQuery(minPrice, maxPrice );
  } else if (selectedCategories.length > 0) {
    alert(selectedCategories);
    productQuery = useGetFilterProductsByCategoriesQuery(selectedCategories);
  } else {
    console.log(`It is working fine!`);
    productQuery = useGetProductsQuery();
  }
  

  const { data: products, isLoading, isError, isSuccess } = productQuery;


 
  if (isLoading) {
    return <p>Loading...</p>;
  }

  if (isError) {
    console.log('Error' + isError);
    return <p>Error fetching products</p>;
  }
  
    return (
      <Container>
        <h1 className="my-4">Product List</h1>
        <Row>
          {products.products.map((product) => (
            <Col key={product.id} xs={12} md={6} lg={4}>
              <Card className="mb-4">
                <Card.Img variant="top" src={product.image} alt={product.name} />
                <Card.Body>
                  <Card.Title>{product.name}</Card.Title>
                  <Card.Text>{product.description}</Card.Text>
                  <Card.Text>Price: ${product.price}</Card.Text>
                  <Button
                    variant="primary"
                    onClick={() => h和leAddToCart(product.id)}
                  >
                    Add to Cart
                  </Button>
                </Card.Body>
              </Card>
            </Col>
          ))}
        </Row>
      </Container>
    );

}

export default ProductList;

// Need to use the React-specific entry point to import createApi
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'

// Define a service using a base URL 和 expected endpoints
export const productApi = createApi({
  reducerPath: 'productApi',
  baseQuery: fetchBaseQuery({ baseUrl: 'http://localhost:5000/' }),
   endpoints: (builder) => ({
    getProducts: builder.query({
      query: () => 'product', // Change this to match your API endpoint for fetching products
    }),
    getCategory: builder.query({
      query: () => 'categories', // Change this to match your API endpoint for fetching products
    }),
   
    getfilterProducts: builder.query({
        query: ({minPrice,maxPrice}) => `/products/filterbypricerange?minPrice=${minPrice}&maxPrice=${maxPrice}`,
    }),
     
     getfilterProductsByCategories: builder.query({
      query: (categories) => `/products/categories=${categories}`,
     }),  
  }),
})

// Export hooks for usage in functional components, which are
// auto-generated based on the defined endpoints
export const { useGetProductsQuery,useGetCategoryQuery, useGetFilterProductsQuery,useGetFilterProductsByCategoriesQuery } = productApi;

帮助我解决代码中的错误

推荐答案

您的产品API中存在打字错误.

将变量设置为CamelCase

getfilterProducts: builder.query({
    query: ({minPrice,maxPrice}) => `/products/filterbypricerange?minPrice=${minPrice}&maxPrice=${maxPrice}`,
}),
 
 getfilterProductsByCategories: builder.query({
  query: (categories) => `/products/categories=${categories}`,
 }), 

getFilterProducts: builder.query({
    query: ({minPrice,maxPrice}) => `/products/filterbypricerange?minPrice=${minPrice}&maxPrice=${maxPrice}`,
}),
 
 getFilterProductsByCategories: builder.query({
  query: (categories) => `/products/categories=${categories}`,
 }), 

Reactjs相关问答推荐

通过单击具有此值的按钮将值添加到数组对象键

Reactjs中的chartjs和reaction-chartjs-2的问题

更改购物车中的产品数量后,PayPal Reaction/Next JS按钮未更新

react 挂钩-使用有效澄清

阻止组件更新的多分派Redux Thunk或setState是否有任何问题

自定义变量默认、聚焦和填充时所需TextField中标签的星号 colored颜色

尽管所有页面在 Reactjs 中都是公开的,但始终导航到特定页面

React useContext 的未定义返回值

标签文本删除了 MUI 概述的输入

React Wordpress Apache 在索引之外重新加载 -> 未找到页面

Chakra UI:如何在选中状态下设置复选框 colored颜色

useMemo 依赖项的行为

React设置上下文并进行导航

ReactJS中使用setState方法时,Context内部的State未进行更新

部署到github pages时请求路径错误

刷新页面时状态改变问题

使用 React.UseEffect 从 api 获取但我的清理返回不起作用

如何将值从下拉列表传递到 select 上的输入?响应式JS

网格项不缩小以适应包含的可滚动列表

为什么我在运行一些 npm react 命令时会收到这些警告?