Lightning Web Components html_templates(三)
Lightning Web Components 强大之处在于模版系统,使用了虚拟dom 进行智能高效的组件渲染。
使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据
数据绑定
我们可以使用{property} 绑定组件模版属性到一个组件js 类中的属性
- 一个简单的例子
组件class
import { LightningElement, api } from 'lwc';
export default class Example extends LightningElement {
@api name = 'World!';
}
组件模版
<template>
Hello, {name}
</template>
- 说明
以上@api 表明属性name 是public 的,去掉之后表明属性是private 的,对于数据绑定{name}
不能包含空格,同时包含表达式的
计算值也是非法的,实际我们需要使用getter
解决
处理用户输入
输入我们帮助我们进行数据变更的处理
- 一个简单例子
组件class
import { LightningElement, track } from 'lwc';
export default class HelloBinding extends LightningElement {
@track name = 'World';
handleInput(event) {
this.name = event.target.value;
}
}
组件模版
<template>
<div>
<p>Hello, {name}!</p>
Name:
<input
type="text"
value={name}
oninput={handleInput}
></input>
</div>
</template>
- 说明
以上input 元素使用oninput 处理值的变更,当数据变更的时候handlerInput 函数被执行,上边的代码
使用了@track
装饰器,说明属性值变动的时候进行模版渲染,如果去掉了,尽管数据变动了,但是
模版不会重新进行渲染
使用getter
进行计算属性处理
- 简单模版
组件模版
<template>
{propertyName}
</template>
组件class
import { LightningElement } from 'lwc';
export default class Component extends LightningElement {
get propertyName() {
// Compute a value for propertyName
}
}
- 一个demo
组件class
import { LightningElement } from 'lwc';
export default class HelloExpr extends LightningElement {
firstName = 'Web';
lastName = 'Component';
get uppercasedFullName() {
const fullName = `${this.firstName} ${this.lastName}`;
return fullName.trim().toUpperCase();
}
}
- 组件模版
<template>
Uppercased Full Name: {uppercasedFullName}
</template>
列表渲染
如果需要渲染列表,我们可以使用for:each
或者 iterator
指令 ,
iterator
指令包好了first
,last
我们可以方便的处理数组数据,同时注意我们需要提供key
指令
方便对于每条数据的是唯一处理(这点好多框架都是一样的)
- for:each 指令
格式for:each={array}
访问当前的元素可以使用for:item="currentItem"
访问索引可以使用for:index="index"
同时结合上边说明,每个item 需要提供一个key
一个简单demo
组件class
import { LightningElement } from 'lwc';
export default class HelloForEach extends LightningElement {
contacts = [
{
Id: '003171931112854375',
Name: 'Amy Taylor',
Title: 'COO',
},
{
Id: '003192301009134555',
Name: 'Michael Jones',
Title: 'CTO',
},
{
Id: '003848991274589432',
Name: 'Jennifer Wu',
Title: 'CEO',
},
];
}
组件模版
<template>
<ul>
<template for:each={contacts} for:item="contact">
<li key={contact.Id}>
{contact.Name}, {contact.Title}
</li>
</template>
</ul>
</template>
- iterator 指令
格式iterator:iteratorName={array}
iterator 可以提供比较多的属性方便我们进行操作
value
可以用来访问array 的属性 格式为:iteratorName.value.propertyName
index
元素在数组中的索引
first
一个布尔值可以用来确定是否是数组的第一条数据
last
一个布尔值可以用来确定是否是数组的最后一条数据
一个简单demo
组件class
import { LightningElement } from 'lwc';
export default class HelloIterator extends LightningElement {
contacts = [
{
Id: '003171931112854375',
Name: 'Amy Taylor',
Title: 'COO',
},
{
Id: '003192301009134555',
Name: 'Michael Jones',
Title: 'CTO',
},
{
Id: '003848991274589432',
Name: 'Jennifer Wu',
Title: 'CEO',
},
];
}
组件模版
<template>
<ul>
<template iterator:it={contacts}>
<li key={it.value.Id}>
<div if:true={it.first} class="list-first"></div>
{it.value.Name}, {it.value.Title}
<div if:true={it.last} class="list-last"></div>
</li>
</template>
</ul>
</template>
说明: 注意如果我们需要访问item 的属性信息,需要使用iteratorName.value.propertyName
而不是
iteratorName.propertyName
条件渲染dom 元素
对于条件渲染dom 元素我们可以使用if:true|false={property}
- 一个参考demo
组件class
import { LightningElement, track } from 'lwc';
export default class HelloIf extends LightningElement {
@track isTrueTemplate = false;
}
组件模版
<template>
<div>
<template if:true={isTrueTemplate}>
This is the true template.
</template>
<template if:false={isTrueTemplate}>
This is the false template.
</template>
</div>
</template>
参考资料
https://lwc.dev/guide/html_templates
Lightning Web Components html_templates(三)的更多相关文章
- Lightning Web Components 开发指南(二)
Lightning Web Components 是自定义元素使用html 以及现代javascript进行构建. Lightning Web Components UI 框架使用web compon ...
- Lightning Web Components 安装试用(一)
Lightning Web Components 简称(lwc) 是一个快速企业级的web 组件化解决方案,同时官方文档很全,我们可以完整的 学习lwc 项目结构 使用npx 官方提供了一个creat ...
- Lightning Web Components 来自salesforce 的web 组件化解决方案
Lightning Web Components 是一个轻量,快速,企业级别的web 组件化解决方案,官方网站也提供了很全的文档 对于我们学习使用还是很方便的,同时我们也可以方便的学习了解salesf ...
- lightning & web components & templates & slots
lightning & web components & templates & slots Web components, Custom elements, Template ...
- Lightning Web Components 组合(五)
使用组合我们可以用来设计复杂的组件. 组合一些比较小的组件,可以增加组件的重新性以及可维护性. 通过以下一个简单的demo,将会展示关于owner 以及container 的概念,在实际的项目中 ex ...
- Lightning Web Components 组件生命周期(六)
组件创建以及渲染流程 组件移除dom 处理流程 组件从dom 移除 组件中的disconnectedCallback() 方法被调用 子组件从dom 移除 每个子组件的disconnectedCall ...
- Lightning Web Components 组件样式(四)
要将样式与组件进行绑定,需要创建一个同名的样式文件,这样样式将会自动应用到组件 在组件中定义的样式的作用域是属于组件的,这样允许组件可以在不同的上下文中可以复用, 可以阻止其他组件的样式的复写 css ...
- 【shadow dom入UI】web components思想如何应用于实际项目
回顾 经过昨天的优化处理([前端优化之拆分CSS]前端三剑客的分分合合),我们在UI一块做了几个关键动作: ① CSS入UI ② CSS作为组件的一个节点而存在,并且会被“格式化”,即选择器带id前缀 ...
- 【转】Facebook React 和 Web Components(Polymer)对比优势和劣势
原文转自:http://segmentfault.com/blog/nightire/1190000000753400 译者前言 这是一篇来自 StackOverflow 的问答,提问的人认为 Rea ...
随机推荐
- SpringCloud微服务基础学习
看了蚂蚁课堂的微服务学习,确实学习了不少关于微服务的知识,现在总结学习如下 : SpringCloud微服务基础单点系统架构传统项目架构传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一 ...
- C#使用Autofac实现控制反转IoC和面向切面编程AOP
Autofac是一个.net下非常优秀,性能非常好的IOC容器(.net下效率最高的容器),加上AOP简直是如虎添翼.Autofac的AOP是通过Castle(也是一个容器)项目的核心部分实现的,名为 ...
- 重新学习Spring一--Spring在web项目中的启动过程
1 Spring 在web项目中的启动过程 Spring简介 Spring 最简单的功能就是创建对象和管理这些对象间的依赖关系,实现高内聚.低耦合.(高内聚:相关性很强的代码组成,既单一责任原则:低耦 ...
- 2019 朗玛信息java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.朗玛信息等公司offer,岗位是Java后端开发,最终选择去了朗玛信息. 面试了很多家公司,感觉大部分公司考察的点 ...
- iOS应用安全开发,你不知道的那些事
来源:http://www.csdn.net/article/2014-04-30/2819573-The-Secret-Of-App-Dev-Security 摘要:iOS应用由于其直接运行在手机上 ...
- KVM on CubieTruck 原理以及网络性能相关思考
1.virtio框架包括哪些? (1)virtio:面向guest驱动的API接口,它在概念上将前端驱动附加到后端驱动,具体实现位于driver/virtio/virtio.c (2)Transpor ...
- AIX 静默安装11gR2 RAC
AIX安装11gR2 RAC 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...
- jquery 表单元素选择器
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...
- LeetCode - 24、两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表.你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 2-> ...
- CentOS7下的AIDE入侵检测配置
一.AIDE的概念 AIDE:Advanced Intrusion Detection Environment,是一款入侵检测工具,主要用途是检查文档的完整性.AIDE在本地构造了一个基准的数据库,一 ...