数据请求

大多数前端应用都需要通过 HTTP 协议与后端服务器通讯。框架内置提供了请求功能,基于社区主流的 axios 进行封装,提供了 request 和 useRequest Hooks 方法。

request

request 基于 axios 进行封装,在使用上与 axios 保持一致,使用方式如下:

  1. import { request } from 'ice'
  2. async function getList() {
  3. try {
  4. const data = await request({
  5. url: '/api/list'
  6. });
  7. console.log(data);
  8. } catch (error) {
  9. console.error(error);
  10. }

useRequest

useRequest 基于 React Hooks 进行封装,因此需要确保 React 版本在 v16.8.0 以上,在组件中使用 useRequest 请求数据并渲染:

  1. import { useRequest } from 'ice';
  2. function ListView(props) {
  3. const { data, loading, error, request } = useRequest({
  4. url: '/api/list',
  5. method: 'GET',
  6. });
  7. const dataSource = data ? data.dataSource : [];
  8. useEffect(() => {
  9. request();
  10. }, []);
  11. return (
  12. <>
  13. {error && <div>{error.message}</div>}
  14. {loading ? (
  15. <div>loading....</div>
  16. ) : (
  17. dataSource.map(item => {
  18. return <div>{item.name}</div>;
  19. })
  20. )}
  21. </>
  22. );
  23. }

请求配置

在实际项目中通常需要对请求进行全局统一的封装,例如配置请求的 baseURL,拦截请求和响应、取消请求等等,这时只需要在应用的的 appConfig 中进行配置即可。

  1. import { createApp } from 'ice';
  2. const appConfig = {
  3. request: {
  4. // ref: https://github.com/axios/axios#request-config
  5. baseURL: '/api',
  6. // ref: https://github.com/axios/axios#interceptors
  7. interceptors: {
  8. request: {
  9. onConfig: (config) => {},
  10. onError: (error) => {}
  11. },
  12. response: {
  13. onConfig: (config) => {},
  14. onError: (error) => {}
  15. },
  16. }
  17. }
  18. };
  19. createApp(appConfig);

更多使用详见:axios