Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.10.2020, 17:24
Интересующийся
Отправить личное сообщение для dewembas Посмотреть профиль Найти все сообщения от dewembas
 
Регистрация: 20.07.2020
Сообщений: 13

Огромное спасибо, буду улучшать знания для того что бы больше вникать
Ответить с цитированием
  #12 (permalink)  
Старый 03.11.2020, 02:48
Интересующийся
Отправить личное сообщение для dewembas Посмотреть профиль Найти все сообщения от dewembas
 
Регистрация: 20.07.2020
Сообщений: 13

Сообщение от Nexus Посмотреть сообщение
dewembas, сделайте макет вашей задачи в любой песочнице, без него непонятно где у вас undefined.
Попрошу у вас ещё подсказку) если не затруднит, подскажите как по онклику на кнопку добавить в избранное, переместить данный фильм на страницу избранного ? Буду благодарен за любую подсказку .
Ответить с цитированием
  #13 (permalink)  
Старый 03.11.2020, 11:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,386

dewembas,
Сообщение от dewembas
как по онклику на кнопку добавить в избранное, переместить данный фильм на страницу избранного ?
По-хорошему стоит реализовать регистрацию/авторизацию пользователей и сохранить список избранного в БД.

Но чтобы просто "поиграться", список избранного можно хранить в localStorage либо в indexedDB.

Если решите хранить список в IndexedDB, то лучше установите пакет, который поможет с нею взаимодействовать, например LocalForage.

Работать с localStorage можно напрямую, через его API, однако для этого все же лучше написать какую-нибудь, хотя бы самую простую обертку с методами get, set для более просто модифицирования кода в будущем (к слову, LocalForage умеет работать и с localStorage в кач-ве хранилища).

Операции чтения/записи из хранилища лучше делать асинхронными, даже если они выполняются синхронно (как в случае с localStorage), чтобы потом можно было легко изменить хранилище даже на то, операции чтения/записи в которое осуществляются асинхронно.

Если вместе с "меткой" о добавлении фильма в избранное нужно хранить еще какие-либо данные, например дату добавления этого фильма в избранное, то лучше (имхо, лучше для того юзать БД) хранить список избранного не как одну запись со списком идентификаторов в хранилище, а как список ключ-значение (<prefix>-<movie-id> => <some-details>). Т.е. для каждого отдельного фильма добавленного в хранилище создавать ключ в определенном формате (пример формата был выше), значением которого будет дополнительная информация об этом ключе.
Ответить с цитированием
  #14 (permalink)  
Старый 06.11.2020, 03:39
Интересующийся
Отправить личное сообщение для dewembas Посмотреть профиль Найти все сообщения от dewembas
 
Регистрация: 20.07.2020
Сообщений: 13

Сообщение от Nexus Посмотреть сообщение
dewembas,
По-хорошему стоит реализовать регистрацию/авторизацию пользователей и сохранить список избранного в БД.

Но чтобы просто "поиграться", список избранного можно хранить в localStorage либо в indexedDB.

Если решите хранить список в IndexedDB, то лучше установите пакет, который поможет с нею взаимодействовать, например LocalForage.

Работать с localStorage можно напрямую, через его API, однако для этого все же лучше написать какую-нибудь, хотя бы самую простую обертку с методами get, set для более просто модифицирования кода в будущем (к слову, LocalForage умеет работать и с localStorage в кач-ве хранилища).

Операции чтения/записи из хранилища лучше делать асинхронными, даже если они выполняются синхронно (как в случае с localStorage), чтобы потом можно было легко изменить хранилище даже на то, операции чтения/записи в которое осуществляются асинхронно.

Если вместе с "меткой" о добавлении фильма в избранное нужно хранить еще какие-либо данные, например дату добавления этого фильма в избранное, то лучше (имхо, лучше для того юзать БД) хранить список избранного не как одну запись со списком идентификаторов в хранилище, а как список ключ-значение (<prefix>-<movie-id> => <some-details>). Т.е. для каждого отдельного фильма добавленного в хранилище создавать ключ в определенном формате (пример формата был выше), значением которого будет дополнительная информация об этом ключе.

Спасибо, решил все таки использовать LocslStorage, но есть опять проблема в масив пушится только один объект, что делать ?
Ответить с цитированием
  #15 (permalink)  
Старый 06.11.2020, 11:21
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,386

Записывайте в хранилище не сами объекты, а их идентификаторы.
Локальное хранилище не резиновое, записывая в него объекты вы быстро израсходуете все доступное пространство.

Сообщение от dewembas
Работать с localStorage можно напрямую, через его API, однако для этого все же лучше написать какую-нибудь, хотя бы самую простую обертку с методами get, set
Мой совет по поводу обертки для localStorage вы проигнорировали, ваше право.

Сообщение от dewembas
но есть опять проблема в масив пушится только один объект
Вы записываете в хранилище всегда только один объект, чему тут удивляться?

const favotireMoviesIds = JSON.parse(localStorage.getItem('favorite-movies')) || [];
const markMovieAsFavorite = movieId => {
    localStorage.setItem('favorite-movies', JSON.stringify([...favotireMoviesIds, movieId]));
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь! surin.89 jQuery 72 26.09.2020 04:51
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 22:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 21:02
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17