Javascript React Native Firebase Redux-何时加载用户数据?
我正在开发我的第一个RN应用程序,对数据加载有一些基本问题 我正在使用Firebase作为后端,我很好奇是否有更好的解决方案来加载用户数据并在登录时保存/持久化用户数据 现在我的过程是: 当用户登录并点击主页时,会出现对Firebase的调用,我们从Firebase获取数据,并将数据作为字符串保存在AsyncStorage中,以及通过Redux保存在状态中 然后,我将该字符串转换为一个对象,并在整个应用程序中根据需要提取值。如果用户需要编辑数据,我将更新AsyncStorage、Redux中的值,然后更新Firebase 这感觉就像到处都有很多更新,我很好奇我是否应该忽略对异步存储的更新,而只将其留给用户登录/注销?或者这是在整个应用程序中处理数据的最佳实践 我专门寻找加载用户数据的最佳实践 一些代码:Javascript React Native Firebase Redux-何时加载用户数据?,javascript,react-native,redux,react-native-firebase,asyncstorage,Javascript,React Native,Redux,React Native Firebase,Asyncstorage,我正在开发我的第一个RN应用程序,对数据加载有一些基本问题 我正在使用Firebase作为后端,我很好奇是否有更好的解决方案来加载用户数据并在登录时保存/持久化用户数据 现在我的过程是: 当用户登录并点击主页时,会出现对Firebase的调用,我们从Firebase获取数据,并将数据作为字符串保存在AsyncStorage中,以及通过Redux保存在状态中 然后,我将该字符串转换为一个对象,并在整个应用程序中根据需要提取值。如果用户需要编辑数据,我将更新AsyncStorage、Redux中的值
import {AsyncStorage} from 'react-native';
import CreateDataContext from './CreateDataContext';
import config from '../config';
import {navigate } from '../NavigationRef';
const authReducer = (state, action) => {
switch(action.type){
case 'add_error':
return {...state, errorMessage: action.payload};
case 'sign_up':
return {errorMessage: '', token: action.payload};
case 'signed_in':
return {errorMessage: '', auth: action.payload};
case 'signed_out':
return {token: null, errorMessage: '', auth: action.payload};
case 'clear_error_message':
return {...state, errorMessage: ''};
case 'user_data':
return {...state, userData: action.payload};
default:
return state;
};
};
const getAllUserData = (dispatch) => {
return async (userId)=>{
try{
const response = await config.grabUserData(userId); //this returns a nested object of user data
await AsyncStorage.setItem('userData', JSON.stringify(response));
await AsyncStorage.setItem('uid', userId);
dispatch({type: 'user_data', payload: JSON.stringify(response)});
} catch(e){
dispatch({type: 'add_error', payload: '' + e});
}
}
};
这种事情有点主观:它取决于应用程序的类型、需求和开发人员的偏好。但是,我建议,如果您在异步存储中手动设置数据块,您可能正在重新发明轮子,并且可能会从为您处理应用程序状态保存的项目中受益。在很大程度上,这应该允许您集中精力在Redux中维护正确的状态,而不必太担心在异步存储中来回复制。这种事情有点主观:它取决于应用程序的类型、需求和开发人员的偏好。但是,我建议,如果您在异步存储中手动设置数据块,您可能正在重新发明轮子,并且可能会从为您处理应用程序状态保存的项目中受益。在很大程度上,这应该允许您集中精力在Redux中维护正确的状态,而不必太担心在异步存储中来回复制