Sergey
useEffect(() => {}, [deps]) второй аргумент здесь — декларативный
Danila
описывание зависимостей — декларативность
Если убрать слово get из названия функции, оставив остальное как есть - поможет? Я тогда вообще не понимаю, мне казалось, всё в голове уже сложилось - и тут это
Evgeniy 🍀
А в чём же? Если я пишу getItem('name'), а не пишу как её достать - это не декларативность?
нет. Декларативность в чистом виде подразумевает отсутствие зависимости от внешних факторов. в твоем примере неясно, откуда берется item, это явный сайдэффект
Алексей
и сам useEffect тем более
Evgeniy 🍀
зато первый не очень
лол. Да, хуки не декларативны, но они являются относительно хорошим компромиссом.
Anonymous
Грубо говоря так, без стилей
Sergey
ты говоришь, вызови мне эффект, когда меняются аргументы это декларативность
Anonymous
https://codesandbox.io/embed/modern-wind-gjjq3
Там варианты (1,2,3) вместо инпута
Anonymous
Кликабельны
Sergey
Если убрать слово get из названия функции, оставив остальное как есть - поможет? Я тогда вообще не понимаю, мне казалось, всё в голове уже сложилось - и тут это
тут всё уходит в корнями в определение декларативности. ты всё ещё пытаешься описать как получить значение. А не результат
Sergey
Sheldhur
есть одна страница, на которую можно попасть из нескольких мест на ней есть кнопка "назад" которая делает history.goBack(), если был внутренний переход но если переход внешний, то роутится в конкретное место это норм? или лучше её убрать нахер, т.к. вернуться назад можно через кнопки браузера + на странице есть крошки
Dmitriy
гайз, кто может подсказать, что сейчас используют для создания и распространения ui китов? нашел bit и связку storybook + lerna может у кого есть опыт и рекомендации
Danila
Не понятно, если честно 😕. В плане, глядя на эту картинку - я всё понимаю, мап более декларативный (хотя в колбэке императивный код таки), я не понимаю почему const a = item({name:'somename'}) это не декларативно, например. Как тогда выглядит то же самое, но в декларативном виде, если представить, что под item, например, сущность из БД?
Danila
Как в аполло? Вся разница в том, что тут я передам объект в функцию, а там - строку в литерал?
Алексей
ну возьмите к примеру useState и напишите: const [state1, setState1] = useState(initialState); const [state2, setState2] = useState(initialState); Где тут декларативность?
Evgeniy 🍀
декларативность не про отсутствие сайд эффектов
ну вообще говоря, и про это тоже. Программа, оперирующая внешним состоянием, не может быть декларативной. По крайней мере до тех пор, пока обращение к этому состоянию не будут описаны явным образом (с помощью монад, например). Хуки хоть и близки к подобному поведению, но все же они только "почти декларативны"
Sheldhur
это чят про философию?
Sergey
вообще storybook сейчас самый популярный
Алексей
ну возьмите к примеру useState и напишите: const [state1, setState1] = useState(initialState); const [state2, setState2] = useState(initialState); Где тут декларативность?
Это типичная императивность с сайдэффектами, причём настолько неявными, что даже какого-то this нет, чтоб к нему прицепиться
Alexander
декларативночть че делаем, императивность как делаем
Andrew
Evgeniy 🍀
Был в свое время вот такой пропозал хуков:
Anonymous
Гайсыы, ну хелпаните плз В ContentEditable не меняется значение даже при onChange https://codesandbox.io/embed/modern-wind-gjjq3
Алексей
Evgeniy 🍀
Sergey
это называется императивность
императивность про то как делать а не что
Алексей
нет, если это монады)
Монад тут нет никаких
Sergey
вообще сайд эффекты не имеют отношения к стилю
Sergey
в фп вон они тоже есть
Evgeniy 🍀
Anonymous
нашел годный уи тулкит https://io-gui.dev/
Andrey
ура, драка за определение декларативности
Dmitriy
вообще storybook сейчас самый популярный
это да, но bit привлекает своей концепцией и простотой поставки компонентов но если сторибук закрывает все те же потребности и при этом его комьюнити массивней, то буду рыть туда
Anonymous
чому?
Danila
декларативночть че делаем, императивность как делаем
Значит, a = 1+2+3 - это императивно, а const summ = (...args) => args.reduce((t,i)=>t+i,0) a = summ(1,2,3) - это декларативно?
Алексей
в фп вон они тоже есть
мне недавно один хаскелист доказывал, что в хаскеле сайдэффектов нет, есть лишь эффекты (которые явные и отражены в типах)
Sheldhur
чому?
бери, делай, потом поймешь как обосрался
Карамультук
Danila
Как а не что - это же блин и есть просто уровень абстрации, я не понимаю как я не понимаю
Sheldhur
Dmitriy
вот ссанина, а по доке все так красиво спасибо за сэкономленное время)
Anonymous
не выставляй value
тогда после ввода будет undefined :/
Anonymous
Sheldhur
тогда ты что-то делаешь не так
Anonymous
не, я серьёзно хочу взять. какие подводные?
Danila
что - перебор массива через for. Как - движением байтов в регистрах памяти
Sheldhur
загляни в мануал, почитай про формы
Sheldhur
не, я серьёзно хочу взять. какие подводные?
откуда мы знаем? тут этим говном никто не пользовался
Карамультук
onChange={(e) => { changeAnswer(id, index, e.target.value); }}
Sheldhur
выглядит ужасно
Danila
Если моя бизнес-логика - это перебор массива, то это таки что
Danila
Я запутался
Sergey
перебор массива это НЕ бизнес-логика
Sergey
нет
Sergey
это не может быть ей
Andrey
ну вы чето ругаете
только что терли про то, что расширять классы компонентов в реакте антипаттерн хуяк, юи кит, в котором кор элементы кастомизируются расширением класса
Карамультук
Алексей
Короче. Никакой декларативности я не вижу в хуках. Это тоже самое апи на классах, просто его чуть доработали и спрятали this поглубже, чтобы особо нежные хейтеры ооп не бушевали.
Sergey
кек