0
这是我迄今为止所使用的,我使用REDX来维护全局登录状态。在我的登录画面,我用行动创造者像这样记录用户...如何检查用户是否登录了,使用firebase进行反应原生?
// In LoginScreen file
onLogin =() => {
this.props.accountLogin({ email, password });
}
而且在操作文件,accountLogin
被定义为:
// In auth_action file
export const accountLogin = ({ email, password }) => {
firebase.auth().signInWithEmailAndPassword(email, password)
.then(user => {
dispatch({ type: LOGIN_SUCCESS, payload: user })});
});
};
然后,在减速的文件,情况LOGIN_SUCCESS
是像这样处理......
// In auth_reducer file
const INITIAL_STATE = {
// ... Other stuff
user: null
};
export default function (state = INITIAL_STATE, action) {
// ... Other cases
// Login Successful case
case LOGIN_SUCCESS:
return { ...state, user: action.payload };
// After this return statement, I now have user's profile info
};
所以我的问题是,我该如何持续存在,因此下一次用户打开应用程序用户的个人资料信息,他们不必重新登录?我做了一些研究,这是我有:
// Use autoRehydrate and persistStore in 'redux-persist'
// In store file
import { createStore, compose, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { autoRehydrate, persistStore } from 'redux-persist';
import { AsyncStorage } from 'react-native';
import reducers from '../reducers';
const store = createStore(
reducers,
{},
compose(
applyMiddleware(thunk),
autoRehydrate()
)
);
persistStore(store, { storage: AsyncStorage, whitelist: ['auth'] });
export default store;
和当然,我没有处理我的auth_reducer
文件REHYDRATE
情况。但是,仍然的确,在用户重新打开应用程序后,我从上次用户使用该应用程序获取用户信息,如何使用这一信息继续修改Firebase数据库中的数据?
例如,如果用户重新打开该应用并希望更改他的名字,firebase如何知道这是授权用户?如何写这个changeName
函数?
谢谢@soutot,就是像一个监听器?所以,每当我退出应用程序,auth状态会改变?那么当我重新打开应用程序时会发生什么?自动登录我? –
是的,Firebase在本地存储auth用户。除了注销,卸载或清理应用程序数据外,每当您打开应用程序时,它都会将您识别为auth用户。 – soutot
非常感谢。最后一个问题是:当我进入用户的主页时,用户名将显示在标题中,这意味着我必须在'componentWillMount()'方法中获取用户的信息,我是否需要调用'const {currentUser} = firebase.auth()'获取当前登录用户的信息?如果是这样,那么我不需要使用redux-persist来持久保存用户的数据? –