根據這里的官方 Redux Toolkit Query 檔案,用于 enhanceEndpoints():
與injectEndpoints 不同,部分端點定義不會替換現有定義,而是在每個定義的基礎上合并在一起(即Object.assign(existingEndpoint, newPartialEndpoint))。
我們不能用以下方法做到這一點嗎?
api.injectEndpoints({ overrideExisting: false, endpoints:...})
那么為什么我們需要額外的 API 呢?
另外,我注意到那里給出的例子:
import { api } from './api'
const enhancedApi = api.enhanceEndpoints({
addTagTypes: ['User'],
endpoints: {
getUserByUserId: {
providesTags: ['User'],
},
patchUserByUserId: {
invalidatesTags: ['User'],
},
// alternatively, define a function which is called with the endpoint definition as an argument
getUsers(endpoint) {
endpoint.providesTags = ['User']
endpoint.keepUnusedDataFor = 120
},
},
})
...不使用
...(builder)=>...builder.query(...)...
這是某種替代語法嗎?
uj5u.com熱心網友回復:
overrideExisting: falseofinjectEndpoints表示如果端點已經存在,您會收到一條錯誤訊息,并且端點不會發生任何事情。如果true,它將替換您現有的端點。
=>injectEndpoints可以用全新的代碼添加或替換端點,但它不能修改端點定義。
enhanceEndpoints另一方面,無法創建新的端點定義 - 但它允許您修改現有的端點。
它有兩個符號:
- 要么將部分端點定義指定為物件。該物件將與端點定義合并
- 或者你有一個回呼函式。這將允許您訪問舊的端點定義,也許可以讀取它,也可以寫入它。
無論哪種方式:如果該端點以前不存在,則什么都不會發生。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/495939.html
上一篇:ReduxToolkitQuery中的updateQueryData()和patchQueryData()有什么區別?
下一篇:如何在api中定位元素?
