创建 Dojo 部件简介
基本用法
定义部件
使用 内置的 create() 将部件定义为一个渲染函数 factory
返回定义了部件结构的 虚拟 DOM 节点,这里使用 TSX 语法
src/widgets/MyWidget.tsx
import { create, tsx } from ‘@dojo/framework/core/vdom’;
const factory = create();
export default factory(function MyWidget() {
return
});
设置部件属性
为了使部件能更好的复用,需要使用类型化的属性接口来抽象出 state, 配置和事件处理函数
使用 create 工厂为部件提供中间件
通过为节点指定 key 属性,来区分同一类型的兄弟元素,此示例中是两个 div 元素。这样当应用程序中的状态发生变化,需要更新 DOM 节点时,框架就可以高效、准确地定位到相关元素
src/widgets/Greeter.tsx
import { create, tsx } from ‘@dojo/framework/core/vdom’;
import icache from ‘@dojo/framework/core/middleware/icache’;
const factory = create({ icache }).properties<{
name: string;
onNameChange?(newName: string): void;
}>();
export default factory(function Greeter({ middleware: { icache }, properties }) {
const { name, onNameChange } = properties();
let newName = icache.get(‘new-name’) || ‘’;
return (
Welcome to a Dojo application!
{name && Hello, {name}!}
What’s your name?
<input
id=“nameEntry”
type=“text”
value={newName}
οninput={(e: Event) => {
icache.set(‘new-name’, (e.target as HTMLInputElement).value);
}}
/>
<button
οnclick={() => {
icache.set(‘new-name’, undefined);
onNameChange && onNameChange(newName);
}}
>
Set my name
);
});
组合部件
通过将部件组合在一起形成多层结构,以满足更复杂的应用程序需求
为子部件提供 state 和事件处理函数等属性(properties)
使用 icache 中间件管理 state,并当状态变更时,失效或重新渲染受影响的部件
src/widgets/NameHandler.tsx
import { create, tsx } from ‘@dojo/framework/core/vdom’;
import icache from ‘@dojo/framework/core/middleware/icache’;
import Greeter from ‘./Greeter’;
const factory = create({ icache });
export default factory(function NameHandler({ middleware: { icache } }) {
let currentName = icache.get(‘current-name’) || ‘’;
return (
<Greeter
name={currentName}
onNameChange={(newName) => {
icache.set(‘current-name’, newName);
}}
/>
);
});
渲染到 DOM 中
使用框架中的 renderer 函数将部件挂载到 DOM 中
也可以对 Dojo 应用程序在页面中呈现的位置做更多控制,以便稳步地采用较小的子组件,甚至支持一个页面中存在多个应用程序或框架
src/main.tsx
import renderer, { tsx } from ‘@dojo/framework/core/vdom’;
import NameHandler from ‘./widgets/NameHandler’;
const r = renderer(() => );
r.mount();
深圳网站建设www.sz886.com
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- Dojo学习笔记(二十一):创建自定义Dojo小部件
- 扩展 Dojo dijits 来创建自定义小部件
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 利用 Dijit Button 和 FilteringSelect 创建自定义小部件
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- 快速创建精彩的Flash游戏 (二) Flash3D引擎简介
- C++ GUI Qt4编程-创建自定义窗口部件
- 创建和删除win7/vista下的启动引导项 - BCD编辑器简介
- dojo框架之创建自定义的类
- Java中使用DOM方式解析和创建XML文档、及dom4j使用简介
- ssm框架创建简单的DVD管理系统(一)项目简介
- 01-lucene简介和索引创建以及搜索