Reactjs 无法使用MobX和React js在页面加载中加载数据
我是react.js的新MobX,我非常兴奋能探索更多关于react的信息。我在谷歌上搜索了很多,并在下面链接的帮助下尝试了这个样本,但没有成功 有人能进来帮我吗?我是作为一名POC来开始我的项目的。这是一个拦截器,在这个时候对我来说意义重大 model.tsReactjs 无法使用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
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()。然后((响应)=>{
这个.活动.推送(…响应);
});