亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

反應 - 暴民 - 獲取 - DRY 最佳實踐

反應 - 暴民 - 獲取 - DRY 最佳實踐

繁星coding 2022-09-29 16:07:18
我正在嘗試清理一些代碼以消除冗余,并對最佳實踐有一些疑問。為了簡單起見,假設我有 3 個 mobx 商店 、 和 。PeopleStorePlacesStoreAuthStore所有這些商店都使用 連接到第三方 API。fetch提供登錄功能,并具有以下屬性:AuthStore@observable apiToken其他商店中存在重復的邏輯,設置 api url、令牌等...我嘗試創建以下文件:// ./api.jsconst url = 'https://example.com'const options = {   headers: {      Authorization: ??? (how do I access AuthStore.apiToken)   }}export const api = (endpoint) => {  fetch(url + endpoint, options)}然后在PeopleStoreimport api from './api'class PeopleStore {   getPeople() {     api('/people');   }}(這只是概念的一個示例,而不是實際的代碼)我的問題是:這是一個好方法,還是有更好的方法可以做到這一點?如何進入內部?apiTokenapi.js我假設這只是一個函數而不是一個反應組件,這是否正確?api如果是這樣,我還能不能把?(我相信我遇到了這個問題)injectAuthStoreapi()我的另一個想法是將所有商店包裝在提供此功能的商店中,但再次(我假設)商店不是實際的 react 組件,這是否會導致任何問題?HOC
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

另一種方法是在應用的頂層全局設置授權標頭。這將要求您安裝公理或類似的東西

例如,在根索引中.js:

  • 通過或以任何方式獲取 API 密鑰process.env.apiToken

  • 設置標頭:

axios.defaults.headers.common['Authorization'] = apiToken;

您還可以設置基本 URL 以幫助處理路徑:

axios.defaults.baseURL = 'https://api.example.com';

這樣,您就不必擔心令牌,它將被照顧。


查看完整回答
反對 回復 2022-09-29
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號