#reactjs #vite #redux-orm
Вопрос:
Я использую redux-orm в проекте react, который использует vite. Но я получаю эту ошибку везде, где есть вызов useSelector:
useSelector.js:38 Uncaught TypeError: Cannot read property 'session' of undefined
at memoize.js:185
at index.jsx:68
at useSelectorWithStoreAndSubscription (useSelector.js:29)
at useSelector2 (useSelector.js:106)
at App (index.jsx:68)
at renderWithHooks (react-dom.development.js:14985)
at mountIndeterminateComponent (react-dom.development.js:17811)
at beginWork (react-dom.development.js:19049)
at HTMLUnknownElement.callCallback2 (react-dom.development.js:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
[memoize.js] из папки модулей узла redux-orm.
index.js СТРОКА:68
const formDefinitions = useSelector(state => fullFormDefinitionSelector(state)); // ! This is causing an error
Селектор определения формы:
import {createSelector} from 'redux-orm';
import orm from '../schema/models';
// Selector to return fully populated datasources.
export const fullFormDefinitionSelector = createSelector(
orm,
session => {
return session.FormDefinition.all()
.toModelArray()
.map(fd => {
return {
...fd.ref,
schema: fd.schema.toRefArray(),
};
});
},
);
Я не думаю, что с этим селектором что-то не так, потому что все селекторы выдают одну и ту же ошибку, поэтому некоторые конфигурации могут отсутствовать.
Models.js
/**
* Redux-orm Models defined here
*/
import {Model, ORM} from 'redux-orm';
import {Datasource, Field, DatasourceTag} from './Datasource';
import {Query} from './Query';
import {FormDefinition, BaseSchema, GridSchema, KPISchema, Pagination, UserFilter, Sorting, ControlDatasource, DatasourceFilter, GridColumn, KPIColumn, KPIObject} from './FormDefinition';
import {POPULATE_USER_SESSION} from 'containers/App/constants';
export class User extends Model {
static parse(userData) {
return this.upsert(userData);
}
static reducer(action, User, session) {
switch (action.type) {
case POPULATE_USER_SESSION:
User.parse(action.payload);
break;
}
}
static get modelName() {
return 'User';
}
}
// Create an ORM instance and hook up the Post and Comment models
export const orm = new ORM({
stateSelector: state => state.orm,
});
orm.register(Datasource, Field, DatasourceTag, User, Query, FormDefinition, BaseSchema, GridSchema, KPISchema, Pagination, UserFilter, Sorting, ControlDatasource, DatasourceFilter, GridColumn, KPIColumn, KPIObject);
export default orm;
Комментарии:
1. Не могли бы вы предоставить воспроизводимый образец кода ? (Код и Коробка )