我们是否需要用于 firebase auth 的异步存储来将用户数据存储在 react native 中
Do we need Async Storage for firebase auth to store user data in react native
我对 firebase 身份验证有疑问。用户登录后,我可以做任何事情。但是当我关闭我的应用程序并再次重新打开它时,我需要再次登录我的应用程序。为了避免这种情况再次发生和老化,我使用 Async Storage 来存储令牌和 login: true 属性。但我对此有疑问。我使用 rnfirebase.io 在我的应用程序中设置了我的 firebse。没有异步存储有没有办法做到这一点?..任何人都可以解释一下吗?
谢谢❤️。 (我使用了 react native 和 redux-saga)
如果你在react-native中使用react-redux中间件,你应该使用AsyncStorage作为保存持久状态的中间件,以减少对firebase的调用。
它允许您保存用户的登录状态和其他内容,而无需从 firebase 再次请求和授权(摘录您可以为其设置超时)。
这是store.js的一个例子,它可以使用AsyncStorage作为redux的中间件在本地保存状态:
import { applyMiddleware, createStore, compose } from "redux";
import { persistStore, persistReducer } from "redux-persist";
import AsyncStorage from "@react-native-async-storage/async-storage";
import thunkMiddleware from "redux-thunk";
import { createLogger } from "redux-logger";
import reducer from "./reducers/"; // lets get the reducers
// create logger in DEV
const enhancers = [
applyMiddleware(
thunkMiddleware,
createLogger({
collapsed: true,
predicate: () => __DEV__,
})
),
];
const composeEnhancers =
(__DEV__ &&
typeof window !== "undefined" &&
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||
compose;
const enhancer = composeEnhancers(...enhancers);
const persistConfig = {
key: "blabla", // key of storage
storage: AsyncStorage,
blacklist: [],
};
const persistedReducer = persistReducer(persistConfig, reducer);
export const store = createStore(persistedReducer, {}, enhancer);
export const persistor = persistStore(store);
我对 firebase 身份验证有疑问。用户登录后,我可以做任何事情。但是当我关闭我的应用程序并再次重新打开它时,我需要再次登录我的应用程序。为了避免这种情况再次发生和老化,我使用 Async Storage 来存储令牌和 login: true 属性。但我对此有疑问。我使用 rnfirebase.io 在我的应用程序中设置了我的 firebse。没有异步存储有没有办法做到这一点?..任何人都可以解释一下吗? 谢谢❤️。 (我使用了 react native 和 redux-saga)
如果你在react-native中使用react-redux中间件,你应该使用AsyncStorage作为保存持久状态的中间件,以减少对firebase的调用。
它允许您保存用户的登录状态和其他内容,而无需从 firebase 再次请求和授权(摘录您可以为其设置超时)。
这是store.js的一个例子,它可以使用AsyncStorage作为redux的中间件在本地保存状态:
import { applyMiddleware, createStore, compose } from "redux";
import { persistStore, persistReducer } from "redux-persist";
import AsyncStorage from "@react-native-async-storage/async-storage";
import thunkMiddleware from "redux-thunk";
import { createLogger } from "redux-logger";
import reducer from "./reducers/"; // lets get the reducers
// create logger in DEV
const enhancers = [
applyMiddleware(
thunkMiddleware,
createLogger({
collapsed: true,
predicate: () => __DEV__,
})
),
];
const composeEnhancers =
(__DEV__ &&
typeof window !== "undefined" &&
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||
compose;
const enhancer = composeEnhancers(...enhancers);
const persistConfig = {
key: "blabla", // key of storage
storage: AsyncStorage,
blacklist: [],
};
const persistedReducer = persistReducer(persistConfig, reducer);
export const store = createStore(persistedReducer, {}, enhancer);
export const persistor = persistStore(store);