Dojo 中间件简介
翻译自:https://github.com/dojo/framework/blob/master/docs/en/middleware/introduction.md
Dojo 的中间件系统能以响应式的方式管理异步或命令式 API,以及影响基于函数的组合部件或其他中间件的行为与属性 API。
框架已提供了几个核心中间件和可选中间件,应用程序开发人员也可以轻松编写自己的中间件。
create()
也可以用于定义中间件定义一个属性接口(可选),以扩充使用了此中间件的部件的属性接口。当创建组合部件实例时传入这些属性值返回一个简单的函数引用,该函数定义了中间件的 API,供其他组合部件或中间件使用src/middleware/myMiddleware.ts
import { create } from '@dojo/framework/core/vdom';const factory = create().properties<{ middlewareProp?: boolean }>();export const myMiddleware = factory(({ properties }) => { return () => { return properties().middlewareProp ? 'Conditional is true' : 'Conditional is false'; };});export default myMiddleware;
组合中间件组合中间件并返回一个对象以公开更复杂的 API使用核心的 invalidator
中间件将组合部件标记为需要重新渲染
src/middleware/myComposingMiddleware.ts
import { create, invalidator } from '@dojo/framework/core/vdom';import myMiddleware from './myMiddleware';const factory = create({ myMiddleware, invalidator });export const myComposingMiddleware = factory(({ middleware: { myMiddleware, invalidator } }) => { return { get() { return myMiddleware(); }, set() { invalidator(); } };});export default myComposingMiddleware;
部件内使用中间件用中间件使用的附加属性来扩充部件的属性接口使用中间件组合成的部件时,传入中间件的属性
src/widgets/MyWidget.tsx
import { create, tsx } from '@dojo/framework/core/vdom';import myComposingMiddleware from '../middleware/myComposingMiddleware';const factory = create({ myComposingMiddleware });export default factory(function MyWidget({ properties, middleware: { myComposingMiddleware } }) { return ( <virtual> <div>{`Middleware property value: ${properties.middlewareProp}`}</div> <div>{`Middleware usage: ${myComposingMiddleware.get()}`}</div> </virtual> );});
src/main.tsx
import renderer, { tsx } from '@dojo/framework/core/vdom';import MyWidget from './widgets/MyWidget';const r = renderer(() => <MyWidget middlewareProp={true} />);r.mount();
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。