AsyncStorage не хранить данные после закрытия приложения - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю подтверждение концепции в React Native.Моя идея состоит в том, чтобы сохранить небольшой объем данных с помощью AsyncStorage, но они не сохраняются после закрытия и открытия приложения.Данные сохраняются, если я не закрываю приложение.

Я сохраняю значения в редукторе, это мой код:

    const initialState = {
    data: [],
    fetching: false
};

const todoReducer = (state = initialState, action) => {
    console.log('action', action);
    console.log('state', state);
    let copied = Object.assign({}, state);
    switch (action.type){
        case ADD_TODO:
            copied.data.push({ready: false, text: action.payload});
            break;
        case CHECK_TODO:
            copied.data[action.payload].ready = true;
            break;
        case REMOVE_TODO:
            copied.data.splice(action.payload, 1);
            break;
        case GETTING_DATA:
            copied.fetching = true;
            break;
        case SET_STORE:
            console.log('action.payload', action.payload);
            copied.data = action.payload;
            copied.fetching = false;
            break;
        default:
            break;
    }
    AsyncStorage.setItem(STORAGE_TODO_KEY, JSON.stringify(copied.data));
    return copied;
};

У меня также есть кнопка, которая ищет информацию (не сразу после сохранения) и находится в образце в текстовом формате, это код

               <Content>
                <Text>{this.state.value}</Text>
                <Button rounded style={{width: '100%', marginTop: 10}}
                        onPress={async ()=> {
                            try {
                                const value = await AsyncStorage.getItem(STORAGE_TODO_KEY);
                                if (value !== null) {
                                    // We have data!!
                                    console.log(value);
                                    this.setState({value})
                                }else{
                                    console.log('No hay data :c');
                                    this.setState({value: 'No hay data :c'})
                                }
                            } catch (error) {
                                // Error retrieving data
                                console.log('Error', error);
                                this.setState({value: error})
                            }
                        }}>
                    <Text style={{textAlign: 'center', width: '100%'}}>Mostar lo guardado</Text>
                </Button>
                {this.props.todos.fetching && <Text>Cargando Lista de quehaceres...</Text>}
                {
                    this.props.todos.data.length > 0 ?
                        this.renderTodoList()
                        : null
                }
            </Content>

В момент запуска приложения, сохранения данных и нажатия кнопки отображается информация, то есть онавосстанавливается из AsyncStorage, но после закрытия приложения оно не возвращает данные

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Если вы работаете на Android с режимом Dev, то, вероятно, время ожидания AsyncStorage истекло: https://github.com/rt2zz/redux-persist/issues/864

0 голосов
/ 20 декабря 2018

AsyncStorage - это асинхронная система хранения постоянных значений ключей, которую можно использовать в любом приложении в приложении.

для использования AsyncStorage при первом импорте:

import {AsyncStorage} from 'react-native';

Для установкизначение в AsyncStorage можно использовать, как показано ниже:

export function setAsyncStorage(key, item) {
    try {
        AsyncStorage.setItem(key, item);
    } catch (error) {
        console.log(error);
    }
}

для извлечения значения из хранилища используйте следующую функцию:

export async function getAsyncStorage(key) {
    try {
        const data = await AsyncStorage.getItem(key);
        return data;
    } catch (error) {
        console.log(error);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...