71 lines
1.4 KiB
TypeScript
71 lines
1.4 KiB
TypeScript
import process from 'process';
|
|
|
|
/**
|
|
* State machine for request
|
|
*
|
|
* @example
|
|
*
|
|
* let former = this.state.rs;
|
|
* this.setState({
|
|
* rs: former.trans(true),
|
|
* })
|
|
*/
|
|
export class RequestState {
|
|
loading: boolean;
|
|
success: boolean;
|
|
constructor() {
|
|
this.loading = true;
|
|
this.success = false;
|
|
}
|
|
|
|
trans(success: boolean): RequestState {
|
|
if (this.loading) {
|
|
this.loading = false;
|
|
this.success = success;
|
|
} else {
|
|
console.error('calling trans on not loading state');
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get URL of backend
|
|
* @param path Relative path to base url, begins with `/`
|
|
* @returns Full url
|
|
*
|
|
* @example
|
|
*
|
|
* ``` tsx
|
|
* import { getUrl } from '@/service';
|
|
* import { Component, ReactNode } from 'react';
|
|
* import Taro from '@tarojs/taro';
|
|
*
|
|
* class Index extends Component {
|
|
* state = {
|
|
* testData: {},
|
|
* }
|
|
* componentDidMount(): void {
|
|
* Taro.request({
|
|
* url: getUrl('/testdata'),
|
|
* method: 'GET',
|
|
* }).then(res => {
|
|
* console.log(res.data);
|
|
* this.setState({ testData: res.data.data });
|
|
* });
|
|
* }
|
|
* render() { ... }
|
|
* }
|
|
* ```
|
|
*/
|
|
export function getUrl(path: string): string {
|
|
const baseUrl = process.env.TARO_APP_API;
|
|
// console.log('bu:', baseUrl);
|
|
if (baseUrl) {
|
|
return baseUrl + path;
|
|
} else {
|
|
console.log('env TARO_APP_API is undefined');
|
|
return '';
|
|
}
|
|
}
|