React的RTQ

//创建 studentApi文件
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/dist/query/react";
//创建Api对象 需要一个对象作为参数
const studentApi = createApi({
  reducerPath: "studentApi",
  //指定查询的基础信息,发送请求的工具
  baseQuery: fetchBaseQuery({
    baseUrl: "/api",
  }),
  //endpoints 用来指定Api中的各种功能
  endpoints(build) {
    return {
      getStudents: build.query({
        query() {
          //用来指定请求的子路径
          return "shanghai?keyword=shanghai";
        },
        //设置数据缓存的时间 0 表示不缓存 在数值秒数内不会重新加载 默认是60s 一分钟后会重新发请求
        keepUnusedDataFor:0,
      })              
    };
  },
});

//endpoints中的函数 会自动生成钩子函数 命名规则如下
export const { useGetStudentsQuery } = studentApi;

export default studentApi;
 
 
//在store index.js中
 
//使用RTK构建store
import{configureStore, getDefaultMiddleware} from '@reduxjs/toolkit'
import schoolSlice from './school';
import stuSlice from './student';
import studentApi from './studentApi'; //导入

//创建store 需要一个配置对象作为参数
const store=configureStore({
    reducer:{
        student:stuSlice.reducer,
        school:schoolSlice.reducer,
        [studentApi.reducerPath]:studentApi.reducer
    },
  //使用缓存
    middleware:getDefaultMiddleware=>getDefaultMiddleware().concat(studentApi.middleware)
})

export default store;
 
//使用前 全局挂载
import React from 'react';
import ReactDOM from 'react-dom/client';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';


const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}> //挂载redux
    <App />
  </Provider>
)
 
//在页面中使用
 
import React from 'react'
import { useGetStudentsQuery } from '../../store/studentApi'

export default function Demo2() {

//调用Api查询数据
const {data,isSuccess,isLoading}=useGetStudentsQuery();

console.log('data: ',data);

  return (
    <div>Demo2</div>
  )

 
}
 
 
 
 
 
 
 
posted @   方方面  阅读(181)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示