Vamos discutir aqui como usar as diretivas de modelo HTML do componente da web do Lightning. O poder do Lightning Web Components é o sistema de modelos, que usa o DOM virtual para renderizar componentes de maneira inteligente e eficiente. Como o nome sugere, as diretivas de atributo estão alterando as propriedades de um elemento ao qual estão anexadas e as estruturais estão mudando. As diretivas de modelo HTML são propriedades especiais associadas a uma tag de modelo.
Um modelo é um HTML válido com uma tag raiz. Quando um componente é renderizado, a tag é substituída pelo nome do componente, <namespace-component-name>. Por exemplo, no console do navegador, um componente com o modelo myComponent.html é renderizado como <c-my-component>, onde c é o </ c-my-namespace padrão.
Escreva modelos usando HTML padrão e algumas diretivas exclusivas do Lightning Web Components.
As diretivas são atributos HTML especiais, como if: true e for: each, que lhe dá mais poder para manipular o DOM na marcação. Os modelos de HTML também renderizam dados para o DOM. Use uma sintaxe simples para vincular decorativamente o modelo de um componente aos dados na classe JavaScript do componente. Aqui estão as diretivas do modelo HTML
- if: true | false
- para cada
- iterator: iterator
- chave = { uniqueId }
- lwc: dom = ”manual”
Usando a diretiva If
Use a diretiva if: true | false para renderizar condicionalmente os elementos DOM em um template. se a expressão da condição retornar verdadeiro, poderemos renderizar o DOM condicionalmente. por exemplo, o código a seguir mostra como usar a diretiva if para renderizar o DOM do modelo.
Suponhamos que se você deseja exibir os valores com base em algum texto, você pode fazê-lo conforme mostrado abaixo.
1
2
3
4
5
6
|
<template if:true={isSelectHot}>
Account Rating is Hot ...
</template>
<template if:false={isSelectHot}>
Account Rating is Not Hot ...
</template>
|
Usando diretiva de iterador
Use esta diretiva para iterar sobre um array e renderizar uma lista. Use esta diretiva para acessar o item atual. O placeholder é um identificador que o modelo injeta no escopo atual. Use esta diretiva para acessar o índice baseado em zero do item atual. O placeholder é um novo identificador que o modelo injeta no escopo atual. Por exemplo, o código a seguir itera a coleção de contasfor:item="currentItem"
currentItem
for:index="index"
index
1
2
3
4
5
|
<template if:true={accounts.data}>
<template for:each={accounts.data} for:item=“acc”>
<p key={acc.Id}>{acc.Name}</p>
</template>
</template>
|
O exemplo a seguir, o código a seguir irá iterar a coleta de dados aninhados que contém contas e seus contatos
1
2
3
4
5
6
7
8
9
|
<template for:each={accountsInner.data} for:item=“acc”>
<li key={acc.Id}>{acc.Name}
<ul key={acc.Id}>
<template for:each={acc.Contacts} for:item=“con”>
<li key={con.Id}>{con.Name}</li>
</template>
</ul>
</li>
</template>
|
Usando diretiva de iterador
Use esta diretiva para aplicar um comportamento especial ao primeiro ou último item em um array e renderizar uma lista. Acesse essas propriedades no iteratorName
:
value
—O valor do item na lista. Use esta propriedade para acessar as propriedades da matriz. Por exemplo ,.iteratorName.value.propertyName
index
—O índice do item na lista.first
—Um valor booleano que indica se este item é o primeiro item da lista.last
—Um valor booleano que indica se este item é o último item da lista.
O exemplo a seguir irá iterar a coleta de dados da conta.
1
2
3
4
5
6
7
8
9
|
<ul class=“slds-m-around_medium”>
<template if:true={accounts.data}>
<template iterator:it={accounts.data}>
<li key={it.value.Id}>
{it.value.Name}
</li>
</template>
</template>
</ul>
|
O exemplo a seguir itera a coleção de dados aninhados.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<template if:true={accountsInner.data}>
<ul>
<template iterator:it={accountsInner.data}>
<li key={it.value.Id}>{it.value.Name}
<ul key={it.value.Id}>
<template iterator:it={it.value.Contacts}>
<li key={it.value.Id}>{it.value.Name}</li>
</template>
</ul>
</li>
</template>
</ul>
</template>
|
chave = {uniqueId}
Use esta diretiva para melhorar o desempenho de renderização, atribuindo um identificador exclusivo a cada item em uma lista. A key
deve ser uma string ou um número, não pode ser um objeto. O mecanismo usa as chaves para determinar quais itens foram alterados.
O exemplo a seguir mostra como definir a diretiva key usando key = {acc.Id} on for: each iterator.
1
2
3
|
<template for:each={accounts.data} for:item=“acc”>
<p key={acc.Id}>{acc.Name}</p>
</template>
|
O exemplo a seguir mostra como definir a diretiva key usando key = {it.value.Id} no iterator.
1
2
3
4
5
|
<template iterator:it={accounts.data}>
<li key={it.value.Id}>
{it.value.Name}
</li>
</template>
|
Usando a diretiva lwc: dom = ”manual”
Usar JavaScript para manipular o DOM não é recomendado porque o mecanismo do Lightning Web Components o faz com mais eficiência. No entanto, existem algumas bibliotecas JavaScript de terceiros que assumem o DOM. Como os componentes da web do Lightning usam o DOM shadow, se uma chamada para appendChild()
manipular o DOM, o estilo não é aplicado ao elemento anexado. Ao usar essas bibliotecas em uma web do Lightning componente, adicione lwc:dom="manual"
a qualquer elemento HTML que deseja manipular com JavaScript. Quando o mecanismo vê a diretiva, ele preserva o encapsulamento DOM da sombra. Adicione a lwc:dom="manual"
diretiva a um elemento HTML nativo vazio. O proprietário do componente chama appendChild()
esse elemento para inserir manualmente o DOM.
1
2
3
|
<template>
<div lwc:dom=“manual”></div>
</template>
|
fonte: rajvakati.com