У меня есть это действие Redux, которое ищет пользователя и возвращает все элементы, которые у него есть:
export const itemsFetch = () => {
const { currentUser } = firebase.auth();
return dispatch => {
firebase
.database()
.ref(`users/${currentUser.uid}/items`)
.on('value', snapshot => {
dispatch({ type: ITEMS_FETCH_SUCCESS, payload: snapshot.val() });
});
};
};
Отлично работает, и каждому возвращенному элементу присвоен уникальный ключ.
Я хочу изменить это действие для поиска определенных элементов , что я и сделал. Это тоже отлично работает:
export const itemLookup = uid => {
const { currentUser } = firebase.auth();
return dispatch => {
firebase
.database()
.ref(`users/${currentUser.uid}/items/${uid}`)
.on('value', snapshot => {
dispatch({ type: ITEM_LOOKUP_SUCCESS, payload: snapshot.val() });
});
};
};
Это тоже хорошо работает, но я могу использовать это только для поиска одного элемента.
Я хочу перебрать массив идентификаторов предметов и детали поиска для каждого. Выполнение этого из компонента и использование mapStateToProps
приводит к тому, что компонент каждый раз перерисовывается, теряя предыдущий поиск в процессе.
Лучше ли перебирать идентификаторы, имеющиеся у меня на уровне компонента, исделать несколько звонков. Или я должен передать массив в действие и каким-то образом зациклить их внутри действия?
Спасибо
Мне кажется, что я делаю что-то глупое или неправильно понимаю Redux.