smalljs$molPesquisar⌘ KDocsPlaygroundCompararEcossistemaSobrePT
Modelo mentalGetting StartedIntroduçãoModelo mentalPrimeiros passosDe TypeScript para view.treeEstrutura do projetoFerramentasEssentialsInstalaçãoViewsEstado e reatividadeRoteamentoRenderizaçãoTestesDeploySolução de problemasDataBusca de dadosEsquemas de dadosGiper BazaMoreVitrineDe React, Vue e SvelteLivro de receitasAdvancedPluginsMetadados de móduloOfflineVistas fantasmaAboutFAQEquipeLançamentosAPI$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

Modelo mental

Se você vem de React ou Vue, os primeiros dias no $mol são gastos procurando coisas que não existem: computed, watch, useEffect, onMounted, um fetch num hook de ciclo de vida. Elas não estão escondidas em algum canto da API; o modelo não tem lugar para elas. Esta página é a versão de cinco minutos desse modelo. Leia-a antes de Views, e volte aqui quando um nome familiar sumir.

Pull, não push

Nada é calculado até alguém ler. Uma view renderiza lendo suas propriedades; cada propriedade lê o que precisa; a cadeia de dependências se monta sozinha a partir dessas leituras. Não há inscrição a declarar nem watch a registrar: a leitura é a inscrição.1$my_profile $mol_view2 sub /3 <= Name $mol_view4 sub / <= name \1namespace $.$$ {2 export class $my_profile extends $.$my_profile {3 @ $mol_mem4 user() {5 return this.$.$mol_fetch.json( 'https://api.example.com/me' ) as { name: string }6 }7 name() {8 return this.user().name9 }10 }11}Renderizar Namename(), name()user(), user() vai à rede. Ninguém contou à view sobre a requisição e ninguém contou à requisição sobre a view. Quando user() muda, tudo o que o leu recalcula, e nada mais.

Sem ciclo de vida

Não há mounted, não há useEffect, não há created. Os dados são pedidos ao ler uma propriedade, e uma view lê suas propriedades quando renderiza. Então o exemplo acima carrega o usuário no momento em que $my_profile aparece na tela, e não antes. Quando a view sai da tela, ninguém mais lê user(), e a célula é liberada junto com a view.É isso que substitui por inteiro o padrão «fetch no mount»: a view pede o que precisa, e o framework decide quando pedir. O carregamento não está preso a um evento de página; está preso a estar visível.

Uma propriedade é uma célula

Um único método com um argumento opcional é, ao mesmo tempo, getter, setter, valor calculado e estado:1@ $mol_mem2count( next?: number ) {3 return next ?? 04}Chamado sem argumento ele lê, chamado com um argumento ele escreve. @ $mol_mem transforma o método numa célula em cache que recalcula quando algo que ela leu mudou. Um valor calculado é apenas um método @ $mol_mem que lê outros métodos. Um watcher não é necessário: um efeito colateral pertence a um evento, e um manipulador de evento é um método marcado com @ $mol_action.1@ $mol_mem2doubled() {3 return this.count() * 24}5 6@ $mol_action7increment() {8 this.count( this.count() + 1 )9}
Editar esta página no GitHubIsto foi útil?SimNãoAnteriorIntroduçãoPróximoPrimeiros passos
Nesta páginaPull, não pushSem ciclo de vidaUma propriedade é uma célulaCódigo síncrono que esperaTudo é uma sobrescritaComo ler os fontesNomesPróximo
Type to search the documentation.