Skip to content

Commit dea35f9

Browse files
committed
add react query
1 parent d1a2a3f commit dea35f9

File tree

10 files changed

+69
-11
lines changed

10 files changed

+69
-11
lines changed

template/.env.development

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
API_URL=http://example.com/
1+
API_URL=https://60520252fb49dc00175b74f7.mockapi.io

template/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import {AppRegistry} from 'react-native';
66
import App from './src/index';
7-
import 'react-native-gesture-handler';
87
import {name as appName} from './app.json';
98

109
AppRegistry.registerComponent(appName, () => App);

template/src/api/APIProvider.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as React from 'react';
2+
import {QueryClient, QueryClientProvider} from 'react-query';
3+
4+
export const queryClient = new QueryClient();
5+
6+
export default function APIProvider({children}: {children: React.ReactNode}) {
7+
return (
8+
// Provide the client to your App
9+
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
10+
);
11+
}

template/src/api/client.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import axios from 'axios';
2+
3+
import {API_URL} from '@env';
4+
5+
export const client = axios.create({
6+
baseURL: API_URL,
7+
});

template/src/api/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './useTasks';
2+
export * from './useAddTask';
3+
export * from './APIProvider';

template/src/api/useAddTask.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {useMutation} from 'react-query';
2+
import {client} from './client';
3+
4+
type TaskType = {
5+
label: string;
6+
done: boolean;
7+
color: string;
8+
};
9+
10+
export function useAddTask() {
11+
return useMutation((data: TaskType) => client.post('/tasks', data));
12+
}

template/src/api/useTasks.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {useQuery} from 'react-query';
2+
import {client} from './client';
3+
4+
type TaskType = {
5+
label: string;
6+
done: boolean;
7+
color: string;
8+
};
9+
10+
const getTasks = async () => {
11+
const {data} = await client.get('/tasks');
12+
return data;
13+
};
14+
15+
export function useTasks() {
16+
return useQuery<TaskType[]>('tasks', getTasks);
17+
}

template/src/index.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@ import 'react-native-gesture-handler';
33
import {ThemeProvider, Toast} from 'ui';
44
import {RootNavigator} from 'navigation';
55
import {setI18nConfig, AuthProvider} from 'core';
6+
import APIProvider from 'api/APIProvider';
67

78
setI18nConfig();
89

910
const App = () => {
1011
return (
11-
<AuthProvider>
12-
<ThemeProvider>
13-
<RootNavigator />
14-
<Toast ref={(ref: any) => Toast.setRef(ref)} />
15-
</ThemeProvider>
16-
</AuthProvider>
12+
<APIProvider>
13+
<AuthProvider>
14+
<ThemeProvider>
15+
<RootNavigator />
16+
<Toast ref={(ref: any) => Toast.setRef(ref)} />
17+
</ThemeProvider>
18+
</AuthProvider>
19+
</APIProvider>
1720
);
1821
};
1922

template/src/screens/Home/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
import React from 'react';
22
import {Button, Screen, Text, View} from 'ui';
3-
import {API} from '@env';
3+
import {API_URL} from '@env';
44
import {translate, useAuth} from 'core';
5+
import {useTasks} from 'api';
56

67
export const Home = () => {
78
const {signOut} = useAuth();
9+
const {data} = useTasks();
810
return (
911
<Screen>
1012
<View flex={1} justifyContent="center">
1113
<Text variant="header" textAlign="center">
1214
{translate('name')}
1315
</Text>
1416
<Text variant="body" textAlign="center">
15-
This is An ENV Var : {API}
17+
This is An ENV Var : {API_URL}
18+
</Text>
19+
20+
<Text variant="body" textAlign="center">
21+
Data from Api : {JSON.stringify(data)}
1622
</Text>
1723
<Button label="LogOut" onPress={signOut} />
1824
</View>

template/types/env.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
declare module '@env' {
2-
export const API: string;
2+
export const API_URL: string;
33
}

0 commit comments

Comments
 (0)