Parcourir la source

rtk_state_currentcat

Gennadysht il y a 2 ans
Parent
commit
d1e834db29
3 fichiers modifiés avec 12 ajouts et 433 suppressions
  1. 3 2
      src/Components/Category.js
  2. 2 398
      src/Components/GoodsList.js
  3. 7 33
      src/reducers/categoryReducer.js

+ 3 - 2
src/Components/Category.js

@@ -6,10 +6,11 @@ import { connect } from "react-redux"
 import { useParams } from "react-router-dom"
 import { MyLink } from "."
 import { actionCategoryFindOne } from "../reducers"
+import { getCurrentCategory } from "../reducers/categoryReducer"
 import { CGoodsList } from "./GoodsList"
 import { CatsList } from "./RootCats"
 
-const CSubCategories = connect(state => ({ cats: state.category.catFindOne?.payload?.subCategories }),
+const CSubCategories = connect(state => ({ cats: getCurrentCategory(state)?.subCategories }),
     { loadData: actionCategoryFindOne })(CatsList);
 
 const Category = (props) => {
@@ -63,7 +64,7 @@ const Category = (props) => {
     )
 }
 
-const CCategory = connect(state => ({ cat: state.category.catFindOne?.payload }),
+const CCategory = connect(state => ({ cat: getCurrentCategory(state) }),
     { loadData: actionCategoryFindOne })(Category);
 
 export { CCategory };

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 398
src/Components/GoodsList.js


+ 7 - 33
src/reducers/categoryReducer.js

@@ -1,46 +1,20 @@
-/*import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
-import { store } from '../App';*/
 import { gqlCategoryFindOne, gqlRootCats } from '../jql/gqlCategories';
 import { createPromiseReducerSlice, actionPromiseGeneric } from './promiseReducer';
 
+const currentCategory = 'currentCategory';
 
 const actionRootCats = () =>
     actionPromiseCategory('rootCats', gqlRootCats());
 const actionCategoryFindOne = (id) =>
-    actionPromiseCategory('catFindOne', gqlCategoryFindOne(id));
+    actionPromiseCategory(currentCategory, gqlCategoryFindOne(id));
+
+const getCurrentCategory = state => (
+    state.category[currentCategory]?.payload
+)
 
 const categoryReducerSlice = createPromiseReducerSlice('category');
 const actionPromiseCategory = (name, promise) =>
     actionPromiseGeneric(categoryReducerSlice, name, promise);
 
-/*const actionCategoryFindOneThunk = createAsyncThunk('category', id => gqlCategoryFindOne(id));
-const actionCategoryFindOne = id => dispatch =>
-    dispatch(actionCategoryFindOneThunk(id));
-
-const actionRootCats = createAsyncThunk('category', () => gqlRootCats());
-
-const categorySlice = createSlice({
-    name: 'category',
-    initialState: {},
-    reducers: {
-        pending(state, payload) { //if (type === 'promise/pending')
-            //state.rootCats = { status: 'PENDING' }
-        },
-        fulfilled(state, { payload }) { //if (type === 'promise/fulfilled')
-            if (payload?.data?.CategoryFind)
-                state.rootCats = { status: 'FULFILLED', payload: payload?.data?.CategoryFind }
-            if (payload?.data?.CategoryFindOne)
-                state.catFindOne = { status: 'FULFILLED', payload: payload?.data?.CategoryFindOne }
-        },
-        rejected(state, errorData) { //if (type === 'promise/rejected')
-            let { error } = errorData;
-            state.rootCats = { status: 'REJECTED', error }
-        },
-    }
-})
-
-let categoryReducer = categorySlice.reducer;
-*/
-
 let categoryReducer = categoryReducerSlice.reducer;
-export { categoryReducer, actionRootCats, actionCategoryFindOne }
+export { categoryReducer, actionRootCats, actionCategoryFindOne, getCurrentCategory }