Size: a a a

2020 December 16

AP

Alexander Ponomarev in Svelte [svelt]
тут как бы не важно байнд у тебя на this или напрямую на focus потому что из родителя нужно чуток подождать когда вызов this.focus() или focus() можно будет сделать =)
источник

DK

Dan Kozlov in Svelte [svelt]
Alexander Ponomarev
не проблема не в этом, проблема в том что ребенок маунтит инпут когда какой-то пропс true например.

Предположим ты поставил пропс true и тебе надо вызвать фокус. Как это сделать? Если ты вызовешь сразу, то комита в дом еще не было и метод focus не указывает ни на что.
Ты создаёшь метод focus тогда, когда у тебя на руках реф на элемент. С этого момента коммит в дом был, можно вызывать ref.focus(), всё будет тип-топ.
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dan Kozlov
Ты создаёшь метод focus тогда, когда у тебя на руках реф на элемент. С этого момента коммит в дом был, можно вызывать ref.focus(), всё будет тип-топ.
покажи на примере в репле, чтобы в дочернем компоненте фокус байндился по условию переданному из родителя (например по пропсу showInput=true)
источник

AP

Alexander Ponomarev in Svelte [svelt]
мб я просто какую-то очевидную вещь не понимаю
источник

DK

Dan Kozlov in Svelte [svelt]
Alexander Ponomarev
покажи на примере в репле, чтобы в дочернем компоненте фокус байндился по условию переданному из родителя (например по пропсу showInput=true)
Так задача не в том. Если фокусит ребёнок, то я пользуюсь экшенами. Задача — сделать фокус из родителя. Зачем — не знаю, но в этом идея ваших экшенов на компонентах.
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dan Kozlov
Так задача не в том. Если фокусит ребёнок, то я пользуюсь экшенами. Задача — сделать фокус из родителя. Зачем — не знаю, но в этом идея ваших экшенов на компонентах.
у ребенка-компонента есть пропс showInput, задача чтобы вместе с установкой value в true у <Child showInput={value} bind:focus={focus}/> вызвать focus чтобы инпут зафокусился
источник

DK

Dan Kozlov in Svelte [svelt]
Нет, такой задачи нет, Александр :) Потому что эта задача решается экшенами на дом-элементах, хахаха.
источник

DK

Dan Kozlov in Svelte [svelt]
Я просто сделаю use:focus={{enabled: showProp}} и всё.
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dan Kozlov
Нет, такой задачи нет, Александр :) Потому что эта задача решается экшенами на дом-элементах, хахаха.
вот поэтому ничего и не двигается, потому что мейнтейнеры считают что таких задач нет ни у кого =)
источник

AP

Alexander Ponomarev in Svelte [svelt]
дак нет же экшенов на компонентах
источник

AP

Alexander Ponomarev in Svelte [svelt]
а инпут внутри компонента =)
источник

AP

Alexander Ponomarev in Svelte [svelt]
можно не думая о том существует такая задача или нет в реальности, просто попробовать ее решить?
источник

DK

Dan Kozlov in Svelte [svelt]
Alexander Ponomarev
у ребенка-компонента есть пропс showInput, задача чтобы вместе с установкой value в true у <Child showInput={value} bind:focus={focus}/> вызвать focus чтобы инпут зафокусился
То есть идея этого сниппета в том, что showInput и focus логически могут быть не связаны?
источник

DK

Dan Kozlov in Svelte [svelt]
А могут быть и связаны и вызваны подряд?
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dan Kozlov
То есть идея этого сниппета в том, что showInput и focus логически могут быть не связаны?
нет идея в том что появление инпута в доме происходит не сразу после того как value ставится в true, а только после того как произойдет комит в дом. До этого у тебя есть промежуток когда value === true но focus === undefined
источник

A

Arushwl in Svelte [svelt]
Дождаться снаружи компонента, пока в нем ноды замаунтятся... вроде. Только как раз use: на ноде об этом и знает🤔
источник

AP

Alexander Ponomarev in Svelte [svelt]
я и говорю что на use апдейт вызывается когда afterUpdate фазу или я не прав? то есть когда уже безопасно работать с домом
источник

AP

Alexander Ponomarev in Svelte [svelt]
то есть смоделировать use на компоненте весьма трудоемко и легко ошибиться
источник

AP

Alexander Ponomarev in Svelte [svelt]
если я прав конечно =)
источник

A

Arushwl in Svelte [svelt]
Actions are functions that are called when an element is created.
источник