Я пытаюсь сделать загрузку модала отдельным чанком, потом мне пришлось включить срез в магазине при запуске модала, но в консоли браузера появляется следующая ошибка
Я нашел эту статью в документации по разделению кода Redux Toolkit
reducerManager.ts:23 В магазине нет допустимого редуктора. Убедитесь, что аргумент, переданный в joinReducers, является объектом, значения которого являются редукторами.
import { combineReducers, Reducer, ReducersMapObject, UnknownAction} from "@reduxjs/toolkit";
import {ReducerManager, StateSchema, StateSchemaKey} from "./StateSchema.ts";
export function createReducerManager(initialReducers : ReducersMapObject): ReducerManager {
const reducers = { ...initialReducers }
let combinedReducer = combineReducers(reducers)
let keysToRemove: StateSchemaKey[] = []
return {
getReducerMap: () => reducers,
reduce: (state: StateSchema, action : UnknownAction) => {
if (keysToRemove.length > 0) {
state = { ...state }
for (let key of keysToRemove) {
delete state[key]
}
keysToRemove = []
}
return combinedReducer(state, action)
},
add: (key : StateSchemaKey, reducer : Reducer) => {
if (!key || reducers[key]) {
return
}
reducers[key] = reducer
combinedReducer = combineReducers(reducers)
},
remove: (key : StateSchemaKey) => {
if (!key || !reducers[key]) {
return
}
// Remove it from the reducer mapping
delete reducers[key]
// Add the key to the list of keys to clean up
keysToRemove.push(key)
// Generate a new combined reducer
combinedReducer = combineReducers(reducers)
}
}
}
Я пытался печатать, но сокращение по-прежнему выдавало ошибку.
import {combineReducers, configureStore, ReducersMapObject} from "@reduxjs/toolkit";
import {StateSchema} from "@/app/StoreProvider/config/StateSchema.ts";
import {userReducer} from '@/entities/User'
import {createReducerManager} from "./reducerManager.ts";
export function createReduxStore(initialState?: StateSchema) {
// @ts-ignore
const rootReducer: ReducersMapObject = combineReducers({
user: userReducer,
})
const reducerManager = createReducerManager(rootReducer);
const store = configureStore({
reducer: reducerManager.reduce,
preloadedState: initialState,
})
// @ts-ignore
store.reducerManager = reducerManager
return store
}
Тут опять ТС показал ошибку, но я решил ее проигнорировать, так как не понимаю, что от меня нужно
Сама ошибка такая отображается в консоли браузера
reducerManager.ts:23 В магазине нет допустимого редуктора. Убедитесь, что аргумент, передаваемый в joinReducers, является объектом, значения которого являются редукторами.
Именно этим я пытаюсь воспользоваться
const store = useStore() as ReduxStoreWithManager
const username = useSelector(getLoginUsername);
const password = useSelector(getLoginPassword);
const isLoading = useSelector(getLoginIsLoading);
const error = useSelector(getLoginError);
useEffect(() => {
store.reducerManager.add('loginForm', loginReducer)
dispatch({type : "@INIT LOGIN_FORM"})
return () => {
store.reducerManager.remove('loginForm');
dispatch({type : "@REMOVE LOGIN_FORM"})
}
})
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-not-have
Проблема с редуксом, не видит магазин. редуктор Manager.ts:23 В магазине нет действительного редуктора. ⇐ Javascript
Форум по Javascript
1736334643
Anonymous
Я пытаюсь сделать загрузку модала отдельным чанком, потом мне пришлось включить срез в магазине при запуске модала, но в консоли браузера появляется следующая ошибка
Я нашел эту статью в документации по разделению кода Redux Toolkit
[b]reducerManager.ts:23 В магазине нет допустимого редуктора. Убедитесь, что аргумент, переданный в joinReducers, является объектом, значения которого являются редукторами.[/b]
import { combineReducers, Reducer, ReducersMapObject, UnknownAction} from "@reduxjs/toolkit";
import {ReducerManager, StateSchema, StateSchemaKey} from "./StateSchema.ts";
export function createReducerManager(initialReducers : ReducersMapObject): ReducerManager {
const reducers = { ...initialReducers }
let combinedReducer = combineReducers(reducers)
let keysToRemove: StateSchemaKey[] = []
return {
getReducerMap: () => reducers,
reduce: (state: StateSchema, action : UnknownAction) => {
if (keysToRemove.length > 0) {
state = { ...state }
for (let key of keysToRemove) {
delete state[key]
}
keysToRemove = []
}
return combinedReducer(state, action)
},
add: (key : StateSchemaKey, reducer : Reducer) => {
if (!key || reducers[key]) {
return
}
reducers[key] = reducer
combinedReducer = combineReducers(reducers)
},
remove: (key : StateSchemaKey) => {
if (!key || !reducers[key]) {
return
}
// Remove it from the reducer mapping
delete reducers[key]
// Add the key to the list of keys to clean up
keysToRemove.push(key)
// Generate a new combined reducer
combinedReducer = combineReducers(reducers)
}
}
}
Я пытался печатать, но сокращение по-прежнему выдавало ошибку.
import {combineReducers, configureStore, ReducersMapObject} from "@reduxjs/toolkit";
import {StateSchema} from "@/app/StoreProvider/config/StateSchema.ts";
import {userReducer} from '@/entities/User'
import {createReducerManager} from "./reducerManager.ts";
export function createReduxStore(initialState?: StateSchema) {
// @ts-ignore
const rootReducer: ReducersMapObject = combineReducers({
user: userReducer,
})
const reducerManager = createReducerManager(rootReducer);
const store = configureStore({
reducer: reducerManager.reduce,
preloadedState: initialState,
})
// @ts-ignore
store.reducerManager = reducerManager
return store
}
Тут опять ТС показал ошибку, но я решил ее проигнорировать, так как не понимаю, что от меня нужно
Сама ошибка такая отображается в консоли браузера
reducerManager.ts:23 В магазине нет допустимого редуктора. Убедитесь, что аргумент, передаваемый в joinReducers, является объектом, значения которого являются редукторами.
Именно этим я пытаюсь воспользоваться
const store = useStore() as ReduxStoreWithManager
const username = useSelector(getLoginUsername);
const password = useSelector(getLoginPassword);
const isLoading = useSelector(getLoginIsLoading);
const error = useSelector(getLoginError);
useEffect(() => {
store.reducerManager.add('loginForm', loginReducer)
dispatch({type : "@INIT LOGIN_FORM"})
return () => {
store.reducerManager.remove('loginForm');
dispatch({type : "@REMOVE LOGIN_FORM"})
}
})
Подробнее здесь: [url]https://stackoverflow.com/questions/79338893/problem-with-redux-doesnt-see-store-reducer-manager-ts23-store-does-not-have[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия