使用资源组合行为
资源可以在多个小部件中使用,并且缓存的数据将被共享。但是,当将多个“数据感知”小部件组合在一起时,共享数据有时是不够的。在某些情况下,多个小部件希望能够共享当前资源选项,以便一个小部件可以设置过滤器,而另一个小部件可以做出反应并呈现过滤后的数据集。这就是创建具有“共享选项”的资源的用武之地。在小部件之间共享选项就像将相同的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>
);
});