Oleg
кто же Вам запретит?)
У тебя эта фраза забиндена?
Anonymous
и я получше ничего не придумал)
Anonymous
Эта логика всегда в селекте, никогда не видел что бы ее где то в другом месте держали
Так как селект узнает про форму? только если через getElementById, но так не пойдет
Anonymous
на document вешайте обработчик прям в родителе, где создан реф. нет надобности его вниз передавать
Для обработчика в свою очередь нужно знать, что именно нужно закрывать
Oleg
Задача вроде как для useOutside.
Nikolai
Для обработчика в свою очередь нужно знать, что именно нужно закрывать
контролируемый компонент нужно делать тогда, чтобы связность не увеличивать
Nikolai
а то селект знает про форму, про то какое в ней поведение - это лишнее
Nikolai
Задача вроде как для useOutside.
на каждый пук у нас есть хук!
Anonymous
да он не знает поведение, ему от формы только реф нужен)
Oleg
на каждый пук у нас есть хук!
Бикоз вай нот? Удобно и переиспользуемо.
Nikolai
Бикоз вай нот? Удобно и переиспользуемо.
если сам пишешь, а не тянешь из npm черти знает что
Vaz-gen
Привет! использую Mobx у меня есть @observable offices = []; в который я получаю с сервера какой то Json но кода я делаю вот такое то он мне приходит undefined```<DragDropContext onDragEnd={this.onDragEnd}> <Droppable droppableId="droppable" type="app"> {(provided) => ( <div className="jfdjfd" ref={provided.innerRef} > {console.log()} {this.offices.map((office, index) => { return <Draggable draggableId={`draggableId-${office.id}`} index={index} key={`draggableKey${office.id}`}> {provided => ( <div ref={provided.innerRef} {...provided.draggableProps}> <Office key={`office${office.id}`} office={office} onCloneClick={this.onCloneClick} onSettingsClick={this.onSettingsClick} addOfficeChildren={this.addOfficeChildren} onRowClick={this.onRowClick} onRowStatusChange={this.onRowStatusChange} onAddClick={this.onAddClick} /> {provided.placeholder} </div> )} </Draggable> })} {provided.placeholder} </div> )} </Droppable> </DragDropContext>```
Vaz-gen
@maximkoylo async componentWillMount() { try { this.offices = await this.getOfficeChildren({ parentId: null }); } catch (e) { notify.show(e.message, 'error'); } }
Vaz-gen
в маунте все работает и без droppable тоже
Dmitriy
если сам пишешь, а не тянешь из npm черти знает что
А если контрол с делаю в репе мега хука?)
Nikolai
А если контрол с делаю в репе мега хука?)
если либа сложная с хуками своими идет, то конечно норм да и в принципе ничего не имею против простых хуков типа useOutsideClick из npm, главное чтобы перед установкой смотрели что там за говно понаписано и как тришейкается
Evgeny
тебе сюда @javascript_jobs
Viktoria
тебе сюда @javascript_jobs
Спасибо, написала
Oleg
а кстати, насколько разумно делать async жизненных методов? или useEffectoв? https://t.me/react_js/799057
artalar
норм
Oleg
норм
это разве не плохая практика?
artalar
Почему?
Oleg
ну функции чистыми должны быть, не?
artalar
какие?
Дмитрий
ну функции чистыми должны быть, не?
useEffect и сделан для выполнения сайд эффектов
Nikolai
ну функции чистыми должны быть, не?
эффекты по определению не чистые)
Oleg
хз, мне казалось почему-то, это антипаттерн. ну окей, спасибо.
artalar
главное что бы однообразно было. Если у вас есть стейт-менеджер - делайте через него. Если все на ЖЦ реакта - пишите асинхронщину в cdm и useEffect - норм
Face
Подскажите, а кто нибудь делал анимацию появления глобально при изменение routa, но при этом обычный fade использовать нельзя, так как он блокирует спинер и снекбар в лояуте?
Yuriy
привет. какое правило в eslint ругается на подобное ? нельзя исполнительные констуркции ставить сразу после любых условий, нужно в if заворачивать
Dmitriy
норм
Разве в эффект можно кобек напрямую async ?
Yuriy
вроде оно спасибо
в airbnb кодстайле есть рекомендация https://github.com/airbnb/javascript/#control-statements--value-selection но правила на это не указано
Yuriy
Код реально плохой, тут и еслинт не надо чтобы заметить это)
код исключительно для демонстарции конструкции, на которое я ищу правило. на спасибо за критику, умник
Китикет
if(!this.lots????.length) { smth }
Ну !length это вообще не семантично, так что не if (this.lots.length === 0)
Китикет
а как? Array.isArray ?
К чему ты это вообще?...
Bogdan
К чему ты это вообще?...
как проверить, что массив, он же это хочет и чем то, что выше плохо
Bogdan
Чево блин)
ты выше написал про говно код, почему он говно и как исправить
Kurzdor
ты выше написал про говно код, почему он говно и как исправить
Я короче клоуну на авторе ничего не говорил бы, а то он еще быканет LUL
Китикет
ты выше написал про говно код, почему он говно и как исправить
Код говно потому что логические выражения ненормально использовать вот так вот в обычном потоке кода
Китикет
+ форыч тут не нужен
Kurzdor
+ форыч тут не нужен
Ну мап может зайти
Китикет
Ну мап может зайти
Норм рофлишь)
Dmitriy
норм
Смотри если напрямую в юзэфект async кинуть, он же вернёт промис, а реакт что в ретерне ждёт?
Kurzdor
Норм рофлишь)
Не рили, я бы рад услышать как тут надо правильно делать
Dmitriy
на сколько я помню все норм будет
Не могу вспомнить но я где то сталкивался с таким багом
Китикет
Не рили, я бы рад услышать как тут надо правильно делать
А чо тут делать if (this.lots.length === 0) { for (let order of this.orders) { doSomething(order) } }
Китикет
Чем тебя форич не устроил?
1) Он нужен не для этих целей, а именно, чтобы делать сайд-эффекты в конце фп-цепочки (после map, filter, reduce и т.д.), так как он ничего не возвращает при вызове 2) В его записи куча лишних скобок, которые портят читаемость 3) Внутри if конструкция for of выглядит более привычно
Китикет
Вот for хоть и быстрее, но яхз
Чаще всего одинаковая скорость
Китикет
Понял, на конструктив вы не способны
Evgen
Понял, на конструктив вы не способны
Толку писать обратное по всем трем пунктам?
Китикет
Толку писать обратное по всем трем пунктам?
У тебя это не получится, потому что 1 пункт неопровержим
Evgen
У тебя это не получится, потому что 1 пункт неопровержим
Железная логика - с ней я спорить конечно же не буду
Evgen
Не нужно писать - я тебя понял
Китикет
Железная логика - с ней я спорить конечно же не буду
Обьясняю лучше - есть целый пласт вполне очевидных, если разобраться, правил, называется СЕМАНТИКА. У каждой конструкции есть свои цели, соответственно показания для применения разные. Если бездумно использовать то что привык, и не пытаться написать чистый семантичный код, естественно для тебя не будет разницы между форычем, фор офом и так далее - ты же просто пишешь что попало, главное чтоб работало. Иная же ситуация когда ты хочешь написать красивый, всегда понятный и поддерживаемый код, тут уже вступает семантика, а согласно ей - у форыча есть определенные места для применения (в конце цепочки), и пихать его везде, соответственно, не нужно
Китикет
Вот тут for of испортит всю картину, потому что для фп стиля он совершенно не предназначен users .filter(hasRecentlyLoggedIn) .map(getEmailAddress) .forEach(sendEmail)
Alexey
И тут Остапа понесло
Китикет
Looch
это все таки итератор и предназначен для перебора кастомных коллекций с помощью генераторов