smalljs$molCerca⌘ KDocumentazionePlaygroundConfrontoEcosistemaInformazioniIT
Risoluzione dei problemiGetting StartedIntroduzioneModello mentalePer iniziareDa TypeScript a view.treeStruttura del progettoStrumentiEssentialsInstallazioneVisteStato e reattivitàRoutingRenderingTestingDeploymentRisoluzione dei problemiDataRecupero datiSchemi di datiGiper BazaMoreVetrinaDa React, Vue e SvelteRicettarioAdvancedPluginMetadati del moduloOfflineViste fantasmaAboutFAQTeamReleaseAPI$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

Risoluzione dei problemi

Ogni voce di questa pagina ha la stessa forma: la build è verde, l'audit è pulito, la console tace, e lo schermo è vuoto o non è quello che intendevi. Il compilatore non vede questi errori perché ognuno di essi è un programma valido che però descrive un altro componente. Trova il titolo che assomiglia a ciò che vedi; sotto ci sono la causa e la soluzione.

La mia sovrascrittura di una proprietà non fa nulla, nessun errore

Il nome in view.tree e il nome del metodo nella classe non coincidono, il più delle volte per via delle maiuscole: exchange_form nell'albero, exchangeForm nella classe. Sono due proprietà. Quella della classe non viene mai chiamata, quella dell'albero mantiene il suo valore predefinito, e niente lo segnala.I nomi sono snake_case ovunque e devono coincidere lettera per lettera. Dopo aver modificato un .view.ts, controlla che ogni sovrascrittura nomini ancora una proprietà esistente; il file generato -view.tree/*.view.tree.d.ts accanto all'albero è l'elenco con cui confrontarsi.

Mi serve un placeholder, disabled o type su un input

Sono proprietà di $mol_string: hint per il placeholder, enabled per lo stato disabilitato, type per il tipo di input. Impostale dove l'input viene usato:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value? <=> password? \Qualsiasi altra proprietà di qualsiasi altro componente si trova allo stesso modo: apri il suo .view.tree, come mostra Come leggere i sorgenti.attr * serve per gli attributi DOM veri che il componente non modella già, e ha una trappola tutta sua: un blocco che non ha ^ come prima riga sostituisce l'intero dizionario di attributi della base, così un $mol_button scritto in quel modo perde disabled, role e tabindex. Inizia il blocco con ^ per ereditare, poi aggiungi le tue chiavi:1attr *2 ^3 data_kind \primary

Una parola viene renderizzata lettera per lettera

Una stringa è stata passata dove ci si aspetta una lista, e la stringa è stata distribuita carattere per carattere. Le stringhe iniziano con \, le liste con /. Il caso tipico è sub, che è una lista:1sub / <= label \Hello

Lo schermo è vuoto, i test sono verdi

Una sovrascrittura è caduta fuori dal .view.ts. L'albero dà a ogni proprietà un valore predefinito, così quando la classe smette di ridefinire rows(), TypeScript è soddisfatto e la lista si renderizza vuota. I test che controllano solo il modello restano verdi perché il modello sta bene.Per ogni sovrascrittura da cui dipende lo schermo, scrivi un test che legga ciò che vede l'utente: rows(), sub(), title() delle sotto-viste, oppure il DOM. Testing mostra entrambe le strade.

I dati non si caricano mai, un componente resta bloccato nello stato di caricamento

Un metodo @ $mol_mem ha restituito una promise come proprio valore: fetch( uri ).then( ... ), un metodo async, o il risultato di $mol_wire_async( this ).load(). Una promise dentro la cella per tutti significa «sto ancora calcolando», e quando si risolve la cella si ricalcola e produce una promise nuova. La rete funziona; la vista non vede mai un risultato.La forma giusta è sincrona: chiama this.$.$mol_fetch.json( uri ) dentro la cella e restituisci il valore già parsato. La fibra si sospende finché la risposta non è arrivata e poi riesegue la cella, così la promise non compare mai nel tuo codice. Dove il lavoro asincrono deve per forza avvenire altrove, metti il suo risultato in una cella di stato separata e fai in modo che l'effetto restituisca un flag o una chiave, mai la promise.Una seconda causa è un errore inghiottito: un try/catch dentro una cella che cattura la sospensione insieme ai guasti veri. Rilancia tutto ciò che è una Promise, oppure usa $mol_fail_catch, che fa quel controllo al posto tuo.

Iscrizione circolare

Modifica questa pagina su GitHubÈ stato utile?NoPrecedenteDeploymentSuccessivoRecupero dati
In questa paginaLa mia sovrascrittura di una proprietà non fa nulla, nessun erroreMi serve un placeholder, disabled o type su un inputUna parola viene renderizzata lettera per letteraLo schermo è vuoto, i test sono verdiI dati non si caricano mai, un componente resta bloccato nello stato di caricamentoIscrizione circolareMaximum call stackUn valore scritto con l'iniziale maiuscola non si lascia sovrascrivere da TypeScriptOgni riga di una lista annidata mostra lo stesso elementoHo cambiato la classe di una sotto-vista e il suo contenuto è sparitoI metodi dal view.ts di un componente base mancano nella sottoclasseUn componente base dichiarato nello stesso file view.tree perde il suo comportamentoGli stili si mescolano tra una sotto-vista e il componente che sta dentroUn selettore su un attributo false non corrisponde maiUn numero in uno stile non cambia nullaDue figli di una vista scroll finiscono uno sopra l'altrominimal_height non ha alcun effetto visibileUn componente incorporato allarga la pagina di latoUn CSS di terze parti non stila il mio componenteCliccare un link alla pagina corrente svuota l'URLIl mio gestore dell'input scatta a ogni renderL'errore lanciato dal mio setter di value non compare maiUn binding di gestore con chiave risulta mancanteIl bundle contiene un modulo che non uso maiAvanti
Type to search the documentation.