У меня довольно сложное приложение React Native, из-за которого сложно представить выставочную закуску или что-то подобное, поэтому я делаю все возможное, чтобы объяснить проблему, с которой я сталкиваюсь:
Одной из особенностей приложения является то, что я иметь массив фиктивных данных, которые пользователь может запросить, чтобы добавить их в свой список избранных. Используя компонент ввода текста Autocomplete
, пользователь может добавить новый элемент избранного в свой список, щелкнув параметр в списке. Этот новый элемент избранного затем должен отображаться.
Список избранного хранится в хранилище с избыточностью и обновляется каждую минуту (по причинам стиля) с помощью ловушки useEffect
.
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно добавить состояние списка избранного в зависимости хука useEffect
. Однако при этом мое приложение не запускается, что, по-видимому, вызвано бесконечной l oop (даже если я не получаю никаких предупреждений или сообщений об ошибках):
Компонент списка избранного
const curFavorites = useSelector(state => state.userData.favorites);
//This dispatch is used to update data in a favorite item inside the `useEffect` hook
const dispatch = useDispatch();
const updateStyling = useCallback((id, attr, value) => {
dispatch(updateFavorites(id, attr, value))
}, [dispatch]);
//The useEffect that does not fire
useEffect(() => {
console.log('test')
updateStyling(id, attr1, "favorite1")
}, [props.minuteCounter, curFavorites ])
При добавлении curFavorites
к зависимостям приложение не запускается и вышеприведенный console.log()
не запускается.
Редуктор, обрабатывающий инициализацию и вставку избранного
import { INSERT_FAVORITES } from "../actions/userActions";
import { FAVORITES } from "../../data/favoritesData";
// Initial state when app launches
const initState = {
favorites: FAVORITES
};
const userReducer = (state = initState, action) => {
switch (action.type) {
case INSERT_FAVORITES:
return {
...state,
favorites: [
...state.favorites,
action.newFavorite
]
}
default:
return state;
}
};
export default userReducer;
Что мне здесь не хватает? Почему у меня бесконечное число l oop при инициализации приложения при добавлении curFavorites
в качестве зависимости в хуке useEffect
?