Angular
中,服务是在彼此不认识的类之间共享信息的好方法。通过使用服务,你将能够:
RxJS可以用于任何框架或纯javascript。这意味着下面的代码可以工作在Vue.js或 React中。
RxJS是一个库,通过使用可观察序列来组合异步和基于事件的程序。
RxJS提供了大量的数学、转换、过滤、实用、条件、错误处理、连接类别的操作符,在响应式编程中使用这些操作符时,生活会变得很简单。
$ npm install axios rxjs axios-observable
创建一个包含所有API服务的文件夹,通常我将其命名为services
我还在src/ services
中创建了它,随便在哪里创建都行。
task.ts
(因为我在这里使用typescript)import Axios, { AxiosObservable } from "axios-observable";
class TaskService {
private static _instance: TaskService;
public static get Instance() {
return this._instance || (this._instance = new this());
}
/////...code here
}
export const _TaskService=TaskService.Instance;
所以在这里我们创建了单例类,这样我们以后就可以使用subject
,而且这比在每个组件中创建一个类的对象要好。
import Axios, { AxiosObservable } from "axios-observable";
class TaskService {
private static _instance: TaskService;
public static get Instance() {
return this._instance || (this._instance = new this());
}
indexTask():AxiosObservable<any> {
return Axios.get<any(`https://example.com/api/index`);
}
showTask(id:number):AxiosObservable<any> {
return Axios.get<any(`https://example.com/api/show/${id}`);
}
storeTask(data:any):AxiosObservable<any> {
return Axios.post<any(`https://example.com/api/store`,data);
}
updateTask(id:number,data:any):AxiosObservable<any> {
return Axios.put<any(`https://example.com/api/update/${id}`,data);
}
deleteTask(id:number):AxiosObservable<any> {
return Axios.delete<any(`https://example.com/api/delete/${id}`);
}
}
export const _TaskService=TaskService.Instance;
import { useEffect, useState } from "react";
import { _TaskService } from "src/services/Task.Service";
const Tasks = () => {
const [tasks, settasks] = useState([]);
useEffect(() => {
_TaskService.indexTask().subscribe({
next: (res) => settasks(res.data),
error: (err) => console.log(err.response),
complete: () => {},
});
return () => {};
}, []);
return (
<div>
{tasks.map((task: any, index: number) => {
return <div key={index} > {task.name} </div>;
})}
</div>
);
};
export default Tasks;
如果你是Angular开发人员,正在切换到React或Vue,我相信你会很高兴看到这个。
如果你不是,那么我建议你阅读Rxjs,特别是Subjects
和操作符(Operators
)。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有