Register 注册接口
Graphin 提供了声明式的 NodeShape 扩展方式。除此之外,Graphin 也支持直接传入 G6 的配置。主要支持自定义交互(behavior),自定义边,自定义边。这让用户对 G6 的交互和边有了扩展能力。
register 是通过 props 传入组件的:
<Graphin register={
nodeShape: () => {},
edgeShape: () => {},
behavior: () => {}
}></Graphin>
register 的具体 API 如下:
register?: {
/** 通过G6原生方法,注册节点 */
nodeShape?: (G6: G6Type) => Register[];
/** 通过G6原生方法,注册边 */
edgeShape?: (G6: G6Type) => Register[];
/** 通过G6原生方法,注册事件 */
behavior?: (G6: G6Type) => BehaviorRegister[];
};
interface Register {
/** 节点名称 */
name: string;
/** register执行函数,参数为G6对象 */
register: (G6: G6Type) => void;
}
interface BehaviorRegister extends Register {
options: any;
mode: string;
}
可以看到,不管是自定义 behavior 还是自定义边,都是通过一个函数注册的。这个函数接收 G6 构造函数,然后返回一个数组。每个数组代表一个要注册的节点/边/行为。其中行为的注册比节点和边要多一个 options 和 mode 字段。
注册返回的 Register 类型中,register 函数就是真正进行注册的地方:
register: {
nodeShape: (G6) => [{
name: "custom",
register: () => {
G6.registerNode("custom", {}) // 详见 G6 registerNode 文档
}
}],
edgeShape: (G6) => [{
name: "custom",
register: () => {
G6.registerEdge("custom", {}) // 详见 G6 registerEdge 文档
}
}],
behavior: (G6) => [{
mode: "default", // 详见 G6 的 mode 文档
options: {}
name: "custom",
register: () => {
G6.registerBehavior("custom", {}) // 详见 G6 registerBehavior 文档
}
}],
}
G6 相关文档