Size: a a a

2020 December 07

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
У меня при такой структуре кода:

let screens = {
 Home: HomeComponent,
 // ...
}
let current = "Home";
let fetcher = (() => {
 // Переменные
 return { fetch }
 async function fetch() {
   if(currentScreen != LoginComponent) {
     /* Обработка данных сфетченных с ссылок */
   }
 }
})();
fetcher.fetch();

$: currentScreen = screens[current] || LoginComponent;

Выдается ошибка ReferenceError: Cannot access 'currentScreen' before initialization

Нужно ли ишак заводить? 🤔
Дык все логично же. Топологически выстраиваются только метки. Относительно остальное кода порядок сохраняется.
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Создай просто переменную явно сверху где-то
источник

AP

Alexander Ponomarev in Svelte [svelt]
Pavel 🦇 Malyshev
Создай просто переменную явно сверху где-то
у нее тогда дефолтного значения не будет, а если продублировать дефолтное значение, то у $ оно перезатрется второй раз. В данном случае присваивание дефолта второй раз не важно, но в другом кейсе может иметь значение.
источник

МТ

Марк Танащук... in Svelte [svelt]
источник

AP

Alexander Ponomarev in Svelte [svelt]
Марк Танащук
посмотри в JS Output, просто все $ обьявляются в конце сгенерированного кода, где бы ты в исходниках их не обьявил
источник

МТ

Марк Танащук... in Svelte [svelt]
Alexander Ponomarev
посмотри в JS Output, просто все $ обьявляются в конце сгенерированного кода, где бы ты в исходниках их не обьявил
Почему так, если при использовании метки оно должно автоматически объявлять её в let?🤔
источник

AP

Alexander Ponomarev in Svelte [svelt]
Марк Танащук
Почему так, если при использовании метки оно должно автоматически объявлять её в let?🤔
оно ее обьявило, просто тоже в конце =)
источник

МТ

Марк Танащук... in Svelte [svelt]
источник

МТ

Марк Танащук... in Svelte [svelt]
😐
источник

МТ

Марк Танащук... in Svelte [svelt]
Гениально
источник

МТ

Марк Танащук... in Svelte [svelt]
Ну ишак так ишак...
источник

МТ

Марк Танащук... in Svelte [svelt]
https://github.com/sveltejs/svelte/issues/5749
Надеюсь скоро пофиксят.

Пока что буду объявлять let вручную =\
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Ну ишак так ишак...
Это не бага
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
Это не бага
То, что свелт управляет объявлением let и объявил его не в правильном месте это бага.
Не я же управляю этим, хотя и могу
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Alexander Ponomarev
у нее тогда дефолтного значения не будет, а если продублировать дефолтное значение, то у $ оно перезатрется второй раз. В данном случае присваивание дефолта второй раз не важно, но в другом кейсе может иметь значение.
Это не так
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
То, что свелт управляет объявлением let и объявил его не в правильном месте это бага.
Не я же управляю этим, хотя и могу
В правильном месте же
источник

AP

Alexander Ponomarev in Svelte [svelt]
Pavel 🦇 Malyshev
Это не так
всмысле не так, я только что попробовал и получил двойную инициализацию =)
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
В правильном месте же
источник

МТ

Марк Танащук... in Svelte [svelt]
Если после объявления всех функций, то да
источник

AP

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