Проблема с редуксом, не видит магазин. редуктор Manager.ts:23 В магазине нет действительного редуктора.Javascript

Форум по Javascript
Ответить
Anonymous
 Проблема с редуксом, не видит магазин. редуктор Manager.ts:23 В магазине нет действительного редуктора.

Сообщение Anonymous »

Я пытаюсь сделать загрузку модала отдельным чанком, потом мне пришлось включить срез в магазине при запуске модала, но в консоли браузера появляется следующая ошибка
Я нашел эту статью в документации по разделению кода 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»