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 ''; } }