Поработаем над методами redux. Но сначала добавим нужные константы в файл src/external/redux/constants.
API, FETCH_WORD_ENDPOINT, ADD_WORD, SET_ERROR, SET_LOADING - значение всех констант равняется их имени.
А потом добавь экспорт функции getFetchWordEndpoint в файл src/external/redux/helpers....
Данные надо где-то хранить. Для этого давай использовать библиотеку @react-native-async-storage/async-storage.
Напишем две функции для сохранения и чтения данных в файле functions.js в корне проекта.
Назовем эти функции setStorage для сохранения и readStorage для чтения....
Теперь добавим немного начального кода для хранилища redux.
Установи библиотеки redux, react-redux и redux-thunk.
В файле src/external/redux/constants.js создай три константы ADD_LIST, LISTS, WORDS.
Значение каждой константы должно быть такое же, как и ее название....
Добавим нужные константы в файл src/external/redux/constants.
DELETE_LIST, DELETE_WORD - значение всех констант равняется их имени.
Экспортируй из файла src/external/redux/actions еще две функции: deleteWord, deleteList и setLoading.
Возвращать каждая должна объект с полями type и payload....
Добавь константу SET_STORAGE_DATA в src/external/redux/constants, равную ее же имени.
Добавь readAsyncStorage функцию в файл src/external/redux/actions и экспортируй ее.
Этот метод должен возвращать асинхронную функцию с одним аргументом dispatch.
В замыкании сначала читаем с помощью readStorage данные для ключей LISTS и WORDS....
Функции deleteListResult, deleteWordResult, addListResult, addWordResult должны быть экспортированы из src/external/redux/helpers.
deleteListResult должен получать в качестве аргументов состояние и список для удаления.
Этот метод должен возвращать обновленное состояние, отфильтровав списки LISTS и WORDS....
Доработаем reducer. По умолчанию он должен возвращать начальное состояние.
Случай ADD_LIST должен вызывать метод addListResult, случай ADD_WORD: addWordResult.
Случаи DELETE_LIST и DELETE_WORD - методы deleteListResult и deleteWordResult соответственно.
При этом всегда нужно возвращать результат вызова метода с соответствующими аргументами....
Нужно создать папки: src/containers/Words/Word, src/containers/Words/Word/Details, src/containers/Words/Word/Option.
В каждой из низ нужен index.js файл для создания соответствующих компонентов.
Начнем с компонента Option. Он должен возвращать элемент Text.
Если свойство detailsKey не равно examples или defs:...
Теперь поработаем над компонентом Details. Он должен возвращать элемент View.
У View свойство marginVertical должно равняться 10.
Внутри View сначала добавим элемент Text: для значения detailsKey defs - внутренний текст Definition:,...
Теперь время проработать компонент Word. В нем будут разворачиваться и сворачиваться детали.
Для этого добавим флаг с использованием хука useState. Начальное значение - false.
Компонент Word должен возвращать элемент View, внутри которого будет TouchableOpacity со стилями:...