我正在開發React Native應用程序。React Native中的全局狀態
我想保存登錄人員的用戶標識,然後檢查用戶是否在每個組件中登錄。
所以我在找什麼就像cookies,會話或全局狀態。
我已經讀過,我應該使用Redux,但這似乎過於複雜,並且很難使其與react-navigation
一起使用。它迫使我爲幾乎所有事物定義動作和縮減器,但我唯一想要的是能夠訪問所有組件中的單個全局狀態/變量。
有沒有其他的選擇,或者我真的應該重新構建我的整個應用程序使用Redux?
我正在開發React Native應用程序。React Native中的全局狀態
我想保存登錄人員的用戶標識,然後檢查用戶是否在每個組件中登錄。
所以我在找什麼就像cookies,會話或全局狀態。
我已經讀過,我應該使用Redux,但這似乎過於複雜,並且很難使其與react-navigation
一起使用。它迫使我爲幾乎所有事物定義動作和縮減器,但我唯一想要的是能夠訪問所有組件中的單個全局狀態/變量。
有沒有其他的選擇,或者我真的應該重新構建我的整個應用程序使用Redux?
在狀態管理方面有一些alternatives to Redux。我會建議你看看連身褲和Mobx。但是不要指望它們比Redux更容易。國家管理主要是一件神奇的事情,大部分的發明都發生在幕後。
但無論如何,如果你覺得你需要一些全球性的國家管理,無論是Redux還是Mobx等,都值得花時間掌握其中的一種解決方案。我不會推薦使用AsyncStorage
或其他任何方法來達到此目的。
像「AsyncStorage」這樣的組件是爲了持久化,我認爲OP關心的是管理通常應該在內存中的應用的狀態。 – sooper
@sooper,這就是爲什麼我不推薦'''AsyncStorage'''。 – milkersarac
我通常做全局是這樣的:
我創造一個globals.js
module.exports = {
USERNAME: '',
};
類似的東西,以存儲用戶名,那麼你只需要輸入:
GLOBAL = require('./globals');
而且如果你想存儲數據,可以說你想保存用戶名只是做:
var username = 'test';
GLOBAL.USERNAME = username;
現在你去了,你只需要在你想要的頁面上導入GLOBAL並使用它,只需使用if (GLOBAL.username == 'teste')
即可。
這種方式工作不正常,不會觸發像this.state – Ansyori
我不認爲擁有多個商店是一種罪行,其中一個商店是包含一個值(或對象或數組或其他)的東西,並且當存儲的數據被修改時向其所有訂閱的偵聽器提供更改通知。 – EpicPandaForce
在反應組件中還有其他替代方法,例如上下文變量,但我認爲從長遠來看,您可能會發現更多結構更易於管理(和測試)。它起初看起來令人生畏,但你很快就會意識到它沒有太多的東西。 – sooper