#reactjs #react-redux #components
#reactjs #реагировать-redux #Компоненты
Вопрос:
Я пытаюсь создать компонент справочной службы в React, он будет содержать всю карту с кучей данных. У меня уже загружены данные, но я не могу получить доступ к данным извне этого компонента.
const ReferenceService = () => {
const dispatch = useDispatch();
const referenceTables = useSelector(selectReferenceTables);
const referenceServiceStatus = useSelector((state) => state.referenceService.status);
useEffect(() => {
if(referenceServiceStatus === 'idle'){
dispatch(loadReferenceTables())
}
}, [referenceServiceStatus, dispatch]);
const getReferenceTables = () => {
return referenceTables;
};
const getReferenceTable = (tableName) => {
return referenceTables[tableName];
};
}
export default ReferenceService;
Я пытался делать:
import ReferenceService from '../referenceService/ReferenceService';
const getRef = () => {
console.log(ReferenceService.getReferenceTables());
}
и получение
Необработанное отклонение (ошибка типа): referenceService_ReferenceService__WEBPACK_IMPORTED_MODULE_6_.default.getReferenceTables не является функцией
Как мне переписать этот компонент, чтобы я мог получить доступ к функциям?
Ответ №1:
ReferenceService не экспортирует getReferenceTables, разместите его и экспортируйте или измените логику
Комментарии:
1. я пробовал это, но тогда я не могу получить доступ к ссылочным таблицам из useSelector(selectReferenceTables);
2. Почему бы просто не заставить ReferenceService возвращать referenceTables?
3. поскольку я хочу добавить к нему другие методы, такие как getReferenceTable, которые просто возвращают 1 из таблицы, и getEntry, которые анализируют и возвращают только одну запись в одной таблице
Ответ №2:
найдено решение..
мне просто нужно было добавить
return {getReferenceTables, getReferenceTable, getEntry};
к ReferenceService
затем добавьте
const {getReferenceTables, getReferenceTable, getEntry} = ReferenceService();
туда, где я хочу его использовать.