From 625c680c5d8f5eb3ad28ffd61d2e95b1f909f5f2 Mon Sep 17 00:00:00 2001 From: Arda Orkin Date: Sat, 3 Feb 2024 18:15:23 +0300 Subject: [PATCH] add redux api slice snippet --- docs/Snippets.md | 1 + src/sourceSnippets/redux.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/docs/Snippets.md b/docs/Snippets.md index 135e201..641dece 100644 --- a/docs/Snippets.md +++ b/docs/Snippets.md @@ -96,6 +96,7 @@ I.E. `tsrcc` | `rxreducer→` | `redux reducer template` | | `rxselect→` | `redux selector template` | | `rxslice→` | `redux slice template` | +| `rxapislice→`| `redux api slice template`| ### PropTypes diff --git a/src/sourceSnippets/redux.ts b/src/sourceSnippets/redux.ts index 0315fc9..b04134f 100644 --- a/src/sourceSnippets/redux.ts +++ b/src/sourceSnippets/redux.ts @@ -7,6 +7,7 @@ type ReduxMapping = { reduxReducer: 'rxreducer'; reduxSelector: 'rxselect'; reduxSlice: 'rxslice'; + reduxApiSlice: 'rxapislice'; mappingToProps: 'reduxmap'; }; @@ -88,6 +89,41 @@ const reduxSlice: ReduxSnippet = { ], }; +const reduxApiSlice: ReduxSnippet = { + key: 'reduxApiSlice', + prefix: 'rxapislice', + body: [ + "import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'", + '', + `export const ${Placeholders.FileName} = createApi({`, + "baseQuery: fetchBaseQuery({baseUrl: 'http://localhost:3000'}),", + "reducerPath: 'reducerPath',", + "tagTypes: ['Tag'],", + 'endpoints: build => ({', + ' get: build.query({', + ' query: (searchParam) => ({', + ' url: `?search=${searchParam}`', + ' headers: {', + ' }', + ' }),', + ' }),', + ' post: build.mutation({', + ' query: payload => ({', + " url: '/',", + " method: 'POST',", + ' headers: {', + " 'Content-Type': 'application/json'", + ' },', + ' body: payload', + ' }),', + " invalidatesTags: (result, error) => [{type: 'Tag'}]", + ' })', + ' })', + '})', + `export const {useGetQuery, usePostMutation} = ${Placeholders.FileName}`, + ], +}; + const mappingToProps: ReduxSnippet = { key: 'mappingToProps', prefix: 'reduxmap', @@ -105,5 +141,6 @@ export default [ reduxReducer, reduxSelector, reduxSlice, + reduxApiSlice, mappingToProps, ];