gpt4 book ai didi

react-native - React Native Redux - 从 asyncstorage 初始化默认状态

转载 作者:行者123 更新时间:2023-12-03 12:19:23 25 4
gpt4 key购买 nike

我正在开发一个 android 应用程序,我的屏幕必须取决于用户是否登录。登录数据存储在 AsyncStorage 中。

到应用程序启动时,它应该从 AsyncStorage 获取数据并将其设为默认状态。我怎样才能做到这一点?

下面是我的 redux 结构

索引.android.js

import {
AppRegistry,
} from 'react-native';

import Root from './src/scripts/Root.js';

AppRegistry.registerComponent('reduxReactNavigation', () => Root);

根.js
import React, { Component } from "react";
import { Text, AsyncStorage } from "react-native";
import { Provider, connect } from "react-redux";
import { addNavigationHelpers } from 'react-navigation';

import getStore from "./store";
import { AppNavigator } from './routers';

const navReducer = (state, action) => {
const newState = AppNavigator.router.getStateForAction(action, state);
return newState || state;
};

const mapStateToProps = (state) => ({
nav: state.nav
});

const user = {};

class App extends Component {
constructor(){
super();
}

render() {
return (
<AppNavigator
navigation={addNavigationHelpers({
dispatch: this.props.dispatch,
state: this.props.nav
})}
/>
);
}
}

const AppWithNavigationState = connect(mapStateToProps)(App);

const store = getStore(navReducer);

export default function Root() {
return (
<Provider store={store}>
<AppWithNavigationState />
</Provider>
);
}

用户 reducer
import {
REGISTER_USER,
UPDATE_USER,
LOGIN_USER
} from '../../actions/actionTypes';

import { handleActions } from 'redux-actions';

**// here is the default state, i would like to get from asyncstorage**
const defaultState = {
isLoggedIn: false,
user:{},
};

export const user = handleActions({
REGISTER_USER: {
next(state, action){
return { ...state, user: action.payload, isLoggedIn: true }
}
},
LOGIN_USER: {
next(state, action){
return { ...state, user: action.payload, isLoggedIn: true }
}
},
}, defaultState);

最佳答案

您可以使用组件生命周期方法 componentWillMount 从 AsyncStorage 获取数据,当数据到达时,您可以更改状态。

关于react-native - React Native Redux - 从 asyncstorage 初始化默认状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com