@@ -23,14 +23,14 @@ This is not production ready.
2323npm install mobx-tanstack-query-api
2424```
2525
26- ``` bash [yarn]
27- yarn add mobx-tanstack-query-api
28- ```
29-
3026``` bash [pnpm]
3127pnpm add mobx-tanstack-query-api
3228```
3329
30+ ``` bash [yarn]
31+ yarn add mobx-tanstack-query-api
32+ ```
33+
3434:::
3535
3636
@@ -74,14 +74,98 @@ export default defineConfig({
7474...
7575"scripts" : {
7676 ...
77- "api-codegen" : " mobx-tanstack-query-api"
77+ "dev: api-codegen" : " mobx-tanstack-query-api"
7878 ...
7979}
8080...
8181```
8282
83- #### Run
83+ #### Run codegen
84+
85+ ::: code-group
86+
87+ ``` bash [npm]
88+ npm run dev:api-codegen
89+ ```
90+
91+ ``` bash [pnpm]
92+ pnpm dev:api-codegen
93+ ```
94+
95+ ``` bash [yarn]
96+ yarn dev:api-codegen
97+ ```
98+
99+ :::
100+
101+ #### Use queries and mutations
102+
103+ ``` ts
104+ import {
105+ getFruits ,
106+ createFruit ,
107+ Tag ,
108+ } from " @/shared/api/__generated__" ;
109+
110+ export const fruitsQuery = getFruits .toQuery ({
111+ enableOnDemand: true ,
112+ params: {},
113+ })
114+
115+ export const fruitCreateMutation = createFruit .toMutation ({
116+ invalidateEndpoints: {
117+ tag: [Tag .Fruits ]
118+ }
119+ })
120+ ```
121+
122+ Another example with classes
123+
124+ ``` ts
125+ import { getFruits } from " @/shared/api/__generated__" ;
126+
127+ export class Fruits {
128+ private abortController = new AbortController ();
129+
130+ @observable
131+ accessor private params = {
132+ search: ' '
133+ }
134+
135+ private fruitsQuery = getFruits .toQuery ({
136+ abortSignal: this .abortController .signal ,
137+ enableOnDemand: true ,
138+ params : () => ({
139+ query: {
140+ search: this .params .search
141+ }
142+ }),
143+ })
144+
145+ constructor (abortSignal ? : AbortSignal ) {
146+ // or you can use linked-abort-controller package
147+ abortSignal .addEventListener (' abort' , () => {
148+ this .abortController .abort ();
149+ })
150+ }
151+
152+ @computed .struct
153+ get data() {
154+ return this .fruitsQuery .result .data || [];
155+ }
156+
157+ @computed .struct
158+ get isLoading() {
159+ return this .fruitsQuery .result .isLoading
160+ }
161+
162+ destroy() {
163+ this .abortController .abort ();
164+ }
165+ }
166+
167+
168+ const fruits = new FruitsModel ();
84169
85- ``` bash
86- npm run api-codegen
170+ console .log (fruits .data ); // enable query
87171```
0 commit comments