В настоящее время я создаю приложение для электронной коммерции и решил использовать Expo в тандеме с Firebase и Redux (я впервые кодирую что-либо в React Native, и учебник, которым я следовал, подтолкнул меня к этому). В настоящее время я понимаю, что, вероятно, лучше всего использовать избыточность, потому что мое приложение должно хранить: -пользовательскую информацию -каталог продукции -Messages
в централизованном месте, к которому легко получить доступ. Тем не менее, я сталкиваюсь с проблемой. Просто не так уж много документации по Redux и FireBase, и я пытаюсь понять, как собрать все это вместе.
На данный момент, при инициализации через мой редуктор управления это код:
'''
//Default Project is the instance of Firebase connection
var defaultProject = null;
//Default Firestore is the link to Firebase
var defaultFirestore = null;
//Upon being called, this function will create an instance of a DEFAULT_APP for Firebase
const initializerFunc = (state) => {
//Assigns firebase as the default project
defaultProject = firebase.initializeApp(firebaseConfig);
//Logs the name -- Will just be default
console.log(defaultProject.name);
//Now that we have access to firebase -- assign the default store to store
defaultFirestore = defaultProject.firestore();
//While categories are stored locally, products are uploaded from cloud
state.categories = CATEGORIES;
function addProduct(doc) {
state.products.push(new Product(
doc.data().id,
doc.data().categories,
doc.data().name,
doc.data().price,
doc.data().count,
doc.data().distributor,
doc.data().minOrder,
doc.data().location,
doc.data().contactPhone,
doc.data().image
));
}
defaultFirestore.collection('ProductList').get().then((snapshot) => {
snapshot.docs.forEach(doc => {
addProduct(doc);
})
console.log(state.products);
})
}
//Create the initialState -- This will have no information associated with it
const initialState = {
products: [],
categories: [],
cartSelection: [],
};
'''
Однако это создает очевидную проблему, поскольку данные не будут получены во время выполнения, состояние не будет настроено для загрузки всех продуктов, и как только все продукты будут в он не будет обновлять состояние, чтобы показать все продукты. Как мне начать заниматься такими вещами?
Любая помощь будет признательна!