файл стора
import { makeAutoObservable } from "mobx";
import HomeService from "../services/HomeService";
import axios from "axios";
import { IErrRegister } from "../models/response/ErrorsRegistration";
import { IHome } from "../models/IHome";
class HomeStore {
content = {} as IHome
isLoading = false
errorsMsg = {} as IErrRegister
constructor() {
makeAutoObservable(this) //данная функция делает стор наблюдаемым
}
setHomeContent(content:IHome) {
this.content = content
}
setLoading(bool: boolean) {
this.isLoading = bool
}
setErrorMsg(error:IErrRegister) {
this.errorsMsg = error
}
async getHomeContent () {
this.setLoading(true)
try {
const res = await HomeService.getHomeContent()
this.setHomeContent(res.data)
} catch (err) {
if (axios.isAxiosError(err)) {
this.setErrorMsg(err.response?.data)
} else {
console.log('Unexpected error', err);
}
} finally {
this.setLoading(false)
}
}
}
const HC = new HomeStore()
export default HC
файл экшена
import $api from "../http";
import {AxiosResponse} from 'axios'
import { IHome } from "../models/IHome";
export default class HomeService {
static async getHomeContent(): Promise<AxiosResponse<IHome>> {
return $api.get<IHome>('/')
}
}
файл вывода данных на страницу
import { observer } from 'mobx-react-lite'
import React from 'react'
import { Context } from '..'
import { IResume } from '../models/IResume'
import { IVacancy } from '../models/IVacancy'
const HomePage:React.FC = () => {
const [candidats, setCandidats] = React.useState<IResume[]>([])
const [vacancies, setVacancies] = React.useState<IVacancy[]>([])
const {store:{homeContent}} = React.useContext(Context)
React.useEffect(() => {
homeContent.getHomeContent()
setCandidats(homeContent.content.resume)
setVacancies(homeContent.content.vacancy)
}, [homeContent])
console.log(candidats)
console.log(vacancies)
return (
<div>HomePage</div>
)
}
export default observer(HomePage)
в сторе в функцию async getHomeContent приходит ответ от сервера и далее я передаю ответ в content = {} as IHome но в HomePage при выводе не понимаю почему в консоле получаю console.log(candidats) // undefined