Как получить доступ к сохраненному файлу JSON AsyncStorage в файле layoutRedux? - PullRequest
0 голосов
/ 11 июня 2019

Я обновляю свой макет приложения с помощью json, загруженного из api в app.js (сохраненного функцией reloadLayoutsConfig), когда я хочу получить доступ к своим данным внутри приложения, все в порядке, но как я могу загрузить макет внутри моего файла layoutRedux ??

 export const reloadLayoutsConfig = async (newLayoutsConfig) => {
    try {
      await AsyncStorage.setItem("@LayoutsConfig", JSON.stringify(newLayoutsConfig));
    } catch (error) {
      console.log("error save user data", error);
    }
  };
export const getLayoutsConfig = async () => {
  try {
    const LayoutsConfig = await AsyncStorage.getItem("@LayoutsConfig");
    return JSON.parse(LayoutsConfig);
  } catch (error) {
    console.log(error);
  }
};

эти две функции работают как шарм, всякий раз, когда мне нужно значение, я просто делаю это:

getLayoutsConfig().then((LayoutsConfig) => {
   this.setState({ LayoutsConfig : LayoutsConfig });
});

это мой макетRedux:

import { getLayoutsConfig} from '@config'

const types = {
  // LOTS OF CODE
}

const initialState = {
  layout: [],
  isFetching: false,
}

var layouts = [];

//  OLD TYPE FROM STORED JSON FILE IN CODE
var layouts = [...LayoutsConfig];

// NEW WAY FROM LOADED JSON FILE FROM API
getLayoutsConfig().then((LayoutsConfig) => {
  layouts = LayoutsConfig;
});

initialState.layout = layouts;

export const actions = {
  // LOTS OF CODE
}

export const reducer = (state = initialState, action) => {
  // LOTS OF CODE
}


Я упомянул мой старый и новый способ доступа к файлу json в том же коде, чтобы вы могли его проверить. в более старой версии у меня был код layout.json в моем коде, и когда мне нужно было получить доступ к файлу, я просто использовал его так:

import { LayoutsConfig } from '@config'

var layouts = [...LayoutsConfig];

в конфигурации:

export const LayoutsConfig = AppConfig.LayoutsConfig;

но теперь я называю это так:


var layouts = [];

getLayoutsConfig().then((LayoutsConfig) => {
  layouts = LayoutsConfig;
});

Я получаю ошибку, как макет не загружен. что я могу сделать и как вызвать мою функцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...