smalljs$molПошук⌘ KДокументаціяПісочницяПорівнянняЕкосистемаПро проєктUK
Розв'язання проблемGetting StartedВступМентальна модельПочаток роботиВід TypeScript до view.treeСтруктура проєктуІнструментарійEssentialsВстановленняВидиСтан і реактивністьМаршрутизаціяРендерингТестуванняДеплойРозв'язання проблемDataОтримання данихСхеми данихGiper BazaMoreВітринаЗ React, Vue та SvelteЗбірник рецептівAdvancedПлагіниМетадані модуляОфлайнПодання-привидиAboutЧасті питанняКомандаРелізиAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Розв'язання проблем

Кожен запис на цій сторінці має ту саму форму: збірка зелена, аудит чистий, консоль мовчить, а на екрані порожньо або не те, що ви задумували. Компілятор цих помилок не бачить, бо кожна з них — коректна програма, яка просто описує інший компонент. Знайдіть заголовок, схожий на те, що ви бачите; під ним причина й лікування.

Перевизначення властивості нічого не робить, помилки немає

Ім'я у view.tree та ім'я методу в класі розійшлися, найчастіше регістром: exchange_form у дереві, exchangeForm у класі. Це дві різні властивості. Класову ніхто не викликає, деревна лишається зі значенням за замовчуванням, і ніхто про це не повідомляє.Імена всюди snake_case і мають збігатися літера в літеру. Після правки .view.ts перевірте, що кожне перевизначення досі називає наявну властивість; список для звірки — згенерований -view.tree/*.view.tree.d.ts поруч із деревом.

Потрібен placeholder, disabled чи type у поля вводу

Це властивості $mol_string: hint — placeholder, enabled — вимкнений стан, type — тип поля. Задавайте їх там, де поле використано:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value? <=> password? \Будь-яка інша властивість будь-якого іншого компонента шукається так само: відкрийте його .view.tree, як показує розділ Як читати вихідники.attr * потрібен для справжніх DOM-атрибутів, які компонент ще не моделює, і має власну пастку: блок, у якого першим рядком не йде ^, замінює весь словник атрибутів бази, тож написаний отак $mol_button втрачає disabled, role і tabindex. Почніть блок з ^, щоб успадкувати, а потім додавайте свої ключі:1attr *2 ^3 data_kind \primary

Слово малюється по літерах

Рядок передали туди, де очікується список, і його розтягло по символах. Рядки починаються з \, списки — з /. Звичний випадок — sub, це список:1sub / <= label \Hello

Екран порожній, тести зелені

Перевизначення випало з .view.ts. Дерево дає кожній властивості значення за замовчуванням, тож коли клас перестає перевизначати rows(), TypeScript задоволений, а список малюється порожнім. Тести, що перевіряють лише модель, лишаються зеленими, бо з моделлю все гаразд.На кожне перевизначення, від якого залежить екран, пишіть тест, що читає побачене користувачем: rows(), sub(), title() підвидів або DOM. Тестування показує і те, і те.

Дані не завантажуються, компонент застряг у стані завантаження

Метод із @ $mol_mem повернув проміс як своє значення: fetch( uri ).then( ... ), async-метод або результат $mol_wire_async( this ).load(). Проміс у комірці читається всіма як «ще обчислюється», а коли він розв'язується, комірка переобчислюється й видає свіжий проміс. Мережа працює, подання не бачить результату ніколи.Правильна форма синхронна: викличте this.$.$mol_fetch.json( uri ) всередині комірки й поверніть розібране значення. Волокно призупиниться, доки не надійде відповідь, і перезапустить комірку, тож проміс у вашому коді не з'являється взагалі. Там, де асинхронна робота все ж має відбуватися осторонь, покладіть її результат в окрему комірку стану, а ефект нехай повертає прапорець чи ключ, але не проміс.Друга причина — проковтнута помилка: try/catch усередині комірки, що ловить призупинення разом зі справжніми збоями. Перекидайте все, що є Promise, або користуйтеся $mol_fail_catch, який робить цю перевірку за вас.

Циклічна підписка

Метод із @ $mol_mem записав в іншу комірку або виконав побічний ефект, який зрештою знецінив щось ним же прочитане. Обчислення лише читають і повертають; записи, мережа, таймери й DOM — справа обробників із @ $mol_action. Друге джерело того самого повідомлення — прив'язка <=> до дочірнього елемента разом із методом у класі, що делегує цьому ж дочірньому елементу, про що наступний запис.
Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадДеплойДаліОтримання даних
На цій сторінціПеревизначення властивості нічого не робить, помилки немаєПотрібен placeholder, disabled чи type у поля вводуСлово малюється по літерахЕкран порожній, тести зеленіДані не завантажуються, компонент застряг у стані завантаженняЦиклічна підпискаMaximum call stackЗначення з великої літери не перевизначається з TypeScriptУсі рядки вкладеного списку показують той самий елементЗмінив клас підвиду, і вміст зникМетоди з view.ts базового компонента не видно в нащадкуБазовий компонент із того самого файлу view.tree втрачає поведінкуСтилі протікають між підвидом і компонентом усередині ньогоСелектор за атрибутом зі значенням false ніколи не спрацьовуєЧисло у стилях нічого не змінюєДвоє дітей скролу лежать одне на одномуminimal_height ні на що не впливаєВбудований компонент розпирає сторінку вбікСторонній CSS не стилізує компонентКлік по посиланню на поточну сторінку очищає URLОбробник поля вводу спрацьовує на кожен рендерВиняток із сетера значення ніде не показуєтьсяПрив'язка обробника з ключем скаржиться, що методу немаєУ бандлі опинився модуль, який я не використовуюДалі
Type to search the documentation.