dojo 龙主logo

使用资源组合行为

资源可以在多个小部件中使用,并且缓存的数据将被共享。但是,当将多个“数据感知”小部件组合在一起时,共享数据有时是不够的。在某些情况下,多个小部件希望能够共享当前资源选项,以便一个小部件可以设置过滤器,而另一个小部件可以做出反应并呈现过滤后的数据集。这就是创建具有“共享选项”的资源的用武之地。在小部件之间共享选项就像将相同的options与资源模板一起传递给多个小部件一样简单。

注意:小部件本身可以选择忽略与模板一起传递的选项,这应该在小部件文档中说明。

MyComposedWidget.tsx

import { create, tsx } from '@dojo/framework/core/vdom';
import { createResourceMiddleware } from '@dojo/framework/core/middleware/resources';

interface ResourceData {
	value: string;
	label: string;
}

const resource = createResourceMiddleware<ResourceData>();

const factory = create({ resource });

export default factory(function MyComposedWidget({ id, middleware: { resource } }) {
	const { createOptions } = resource;
	const options = createOptions(id);

	return (
		<div>
			<Results resource={resource({ template, options })} />
			<Pagination resource={resource({ template, options })} />
		</div>
	);
});