Reactjs 无法使用MobX和React js在页面加载中加载数据

Reactjs 无法使用MobX和React js在页面加载中加载数据,reactjs,mobx,Reactjs,Mobx,我是react.js的新MobX,我非常兴奋能探索更多关于react的信息。我在谷歌上搜索了很多,并在下面链接的帮助下尝试了这个样本,但没有成功 有人能进来帮我吗?我是作为一名POC来开始我的项目的。这是一个拦截器,在这个时候对我来说意义重大 model.ts export interface IActivity { id: string; title: string; description: string; category: string; dat

我是react.js的新MobX,我非常兴奋能探索更多关于react的信息。我在谷歌上搜索了很多,并在下面链接的帮助下尝试了这个样本,但没有成功

有人能进来帮我吗?我是作为一名POC来开始我的项目的。这是一个拦截器,在这个时候对我来说意义重大

model.ts

export interface IActivity {
    id: string;
    title: string;
    description: string;
    category: string;
    date: string;
    city: string;
    venue: string;
}
import axios, { AxiosResponse } from 'axios';

axios.defaults.baseURL = 'https://localhost:xxx/api';

const responseBody = (response: AxiosResponse) => response.data;
const requests = { get: (url: string) => axios.get(url).then(responseBody) };
const Activities = { list: () => requests.get('/activities/getactivities') };

// eslint-disable-next-line import/no-anonymous-default-export
export default { Activities };
import { observable, action, makeObservable } from 'mobx';
import { createContext } from 'react';
import { IActivity } from './../models/agent';
import agent from '../api/agent';

class ActivityStore {
    @observable activities: IActivity[] = [];

    constructor() {
        makeObservable(this);
    }

    @action loadActivities = () => {
        agent.Activities.list().then((response) => {
            this.activities.push(response);
        });
    };
}

export const activityStoreContext = createContext(new ActivityStore());
agent.ts

export interface IActivity {
    id: string;
    title: string;
    description: string;
    category: string;
    date: string;
    city: string;
    venue: string;
}
import axios, { AxiosResponse } from 'axios';

axios.defaults.baseURL = 'https://localhost:xxx/api';

const responseBody = (response: AxiosResponse) => response.data;
const requests = { get: (url: string) => axios.get(url).then(responseBody) };
const Activities = { list: () => requests.get('/activities/getactivities') };

// eslint-disable-next-line import/no-anonymous-default-export
export default { Activities };
import { observable, action, makeObservable } from 'mobx';
import { createContext } from 'react';
import { IActivity } from './../models/agent';
import agent from '../api/agent';

class ActivityStore {
    @observable activities: IActivity[] = [];

    constructor() {
        makeObservable(this);
    }

    @action loadActivities = () => {
        agent.Activities.list().then((response) => {
            this.activities.push(response);
        });
    };
}

export const activityStoreContext = createContext(new ActivityStore());
activityStore.ts

export interface IActivity {
    id: string;
    title: string;
    description: string;
    category: string;
    date: string;
    city: string;
    venue: string;
}
import axios, { AxiosResponse } from 'axios';

axios.defaults.baseURL = 'https://localhost:xxx/api';

const responseBody = (response: AxiosResponse) => response.data;
const requests = { get: (url: string) => axios.get(url).then(responseBody) };
const Activities = { list: () => requests.get('/activities/getactivities') };

// eslint-disable-next-line import/no-anonymous-default-export
export default { Activities };
import { observable, action, makeObservable } from 'mobx';
import { createContext } from 'react';
import { IActivity } from './../models/agent';
import agent from '../api/agent';

class ActivityStore {
    @observable activities: IActivity[] = [];

    constructor() {
        makeObservable(this);
    }

    @action loadActivities = () => {
        agent.Activities.list().then((response) => {
            this.activities.push(response);
        });
    };
}

export const activityStoreContext = createContext(new ActivityStore());
App.tsx

import { useContext, useEffect } from 'react';
import { observer } from 'mobx-react-lite';
import { activityStoreContext } from '../src/stores/activityStore';

const App = observer(() => {
    const activityStore = useContext(activityStoreContext);

    const display = activityStore.activities.map((activity) => (
        <li key={activity.id}>{activity.title}</li>
    ));

    useEffect(() => {
        activityStore.loadActivities();
    }, [activityStore]);

    return (
        <div>
            <ul>{display}</ul>
        </div>
    );
});

export default App;
从“react”导入{useContext,useffect};
从'mobx react lite'导入{observer};
从“../src/stores/activityStore”导入{activityStoreContext};
常量应用程序=观察者(()=>{
常量activityStore=useContext(activityStoreContext);
const display=activityStore.activities.map((活动)=>(
  • {activity.title}
  • )); useffect(()=>{ activityStore.loadActivities(); },[activityStore]); 返回(
      {display}
    ); }); 导出默认应用程序;
    package.json

    边缘浏览器的输出(在chrome和firefox中也一样)
    mobx@6.0.0
    或更高版本。你需要使用

    如果对
    agent.Activities.list()
    的响应是一个数组,则可能希望将此数组中的所有元素推送到
    this.Activities
    数组,而不是推送整个数组

    agent.Activities.list()。然后((响应)=>{
    这个.活动.推送(…响应);
    });
    
    mobx@6.0.0
    或更高版本。你需要使用

    如果对
    agent.Activities.list()
    的响应是一个数组,则可能希望将此数组中的所有元素推送到
    this.Activities
    数组,而不是推送整个数组

    agent.Activities.list()。然后((响应)=>{
    这个.活动.推送(…响应);
    });