@Antoskin
React

Как в Реакте сохранить переменную в БД?

Хочу на сайте реализовать лайки и кол просмотров. Клики у меня работают через реакт.
Проблема в том что я пока не пойму какой должен быть аглогритм действий, для того что б они запоминались . Сейчас у меня тупо увеличиваются при каждом клике, и при перезагрузки стр, счёт обнуляется.

Сразу же скажу что с back-end я не дружу, прям самую малость пхп и mysql знаю.
Вот как я думаю, поправьте если не так:
1)при помощи аjax беру изменённый this.state.like и передаю его на пхп страницу.
2) при помощи localStorage делаю ограничение, что б можно было увеличить счётчик только на один раз для одного пользователя.
3)Как то при помощи запросов передаю данные в mysql,
4) Эти данные из таблицы каким то образом должны оказаться в react в this.state.like

Я правильно мыслю?? Спасибо!
  • Вопрос задан
  • 1166 просмотров
Пригласить эксперта
Ответы на вопрос 4
Нельзя просто использовать javascript + php?
Ответ написан
crazy_leo
@crazy_leo
Frontend Developer
LocalStorage - индивидуальное хранилище.
Вам необходимо общее хранилище - база данных (MongoDb, MySql ...)
Конечно вы можете делать запросы к общему хранилищу, если у вас имеется специальная библиотека которая дает API к нему.
Но это не рекомендуется, так как любой желающий сможет модифицировать запросы и т.д.
По любому для отображения страницы нужен сервер, скорее всего в вашем случае настроен webpack или вы используете create-react-app и не замечаете этого.

В идеале все должно быть так:
1) Берете кол-во просмотров с базы данных, и меняете state.
2) Когда человек кликает делать ajax запрос к серверу чтобы он закинул в базу данных значение.
Ответ написан
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
В componentDidMount() вам необходимо засунуть функцию которая будет брать данные с базы и отображать их. Замет по клюку вам необходимо увеличивать значение в базе и вызывать функцию которая опять возьмёт уже новые данные с базы. Таким образом вам вообще не нужен LocalStorage
Ответ написан
Комментировать
@svet1
Здесь надо точно реализовать без localStorage! Иначе она будет забита всеми лайками, что были ранее.

Алгоритм действий для вашего случая:
1 делается клик на лайке
2 Отправляется http запрос на сервер
3 Запрос обрабатывается сервером и если всё нормально он увеличивает лайки в базе данных и возвращает "success"
4 Реакт получив одобрение сервера увеличивает лайк на 1

Это простой вариант увеличения лайка
Если вам нужен усложненный, то в конце заместо увеличения цифры на 1, делается ещё один запрос, чему равно новое количество лайков и уже отображается новая цифра. Это даст возможность показывать актуальное количество лайков. Например, если после загрузки страницы и лайка поста, ещё 10 человек успели лайкнуть, то количество лайков вырастит сразу на 10+1 ваш
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы