-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix/contacts - Исправление раздела "Контакты" #206
Conversation
Создал задачу #99 в репозитории бэкенда. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
src/pages/contacts/contacts.tsx
Outdated
const [userData, setUserData] = React.useState({ | ||
userEmail: 'www@yandex.ru', | ||
userVKLink: 'https://vk.com/me2help', | ||
const [contactsData, setContactsData] = useState<TContacts>({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
По-хорошему, тут должен быть хук useForm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- переписала код с использованием хука
useForm
Не смогла решить такую проблему - при обновлении страницы инпуты опустошаются и значения снова отображаются только после ререндера (например, после нажатия на кнопку редактирования или перехода между вкладками)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- переписала код с использованием хука
useForm
Не смогла решить такую проблему - при обновлении страницы инпуты опустошаются и значения снова отображаются только после ререндера (например, после нажатия на кнопку редактирования или перехода между вкладками)
Проблема актуальна?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, корректно в этом плане работало только когда обращение за данными на бэк и setContsctsData были обернуты в UseEffect (по отдельности). Тогда при обновлении происходил запрос к бэку и после этого отрабатывал второй useEffect (с setContsctsData), так как у него в зависимостях были данные, получаемые с бэка.
Может из хука useForm ёще setValues возвращать?
Вот так всё работает корректно:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, так в принципе можно сделать, только вынести за пределы компонента:
const initialContactsValues = {
email: null,
socialNetwork: null,
}
export function ContactsPage() {
...
,...
....
const { values, handleChange, isValid, setValues } = useForm<TContacts>(initialContactsValues);
Чуть позже мы перейдем на нормальный хук)
Как исправишь - пингани, я апрувну
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, корректно в этом плане работало только когда обращение за данными на бэк и setContsctsData были обернуты в UseEffect (по отдельности). Тогда при обновлении происходил запрос к бэку и после этого отрабатывал второй useEffect (с setContsctsData), так как у него в зависимостях были данные, получаемые с бэка.
@INextYP слушай, а может просто завести слайс system
в хранилище, и туда прям на монтировании App
затягивать конфиденциальность, контакты и всё прочее такое?
А потом по WS сделаем апдейты при изменении.
…и обновлении данных
@INextYP , готово)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Отлично;)
Реализовала получение данных о контактах с бэка.
Коллекция для тестирования:
ya-pomogau-db.contacts.json
Редактирование доступно только для root-администратора (обеспечено сокрытием блоков от остальных пользователей + дублирующая проверка на этапе сабмита).
Не нашла ручку для редактирования контактов (есть метод сервиса, но нет соответствующего метода в контроллере, скрины ниже), поэтому реализовала на фронте пока в черновом варианте.
В
ContactsService
есть метод для редактирования:В контроллере только GET-метод для роута /contacts: