use-node-render.mdx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # useNodeRender
  2. 提供节点渲染相关的方法, 返回结果的 form 等价于 [getNodeForm](/api/utils/get-node-form.html)
  3. ## 固定布局
  4. - Return: [NodeRenderReturnType](https://flowgram.aiauto-docs/fixed-layout-editor/interfaces/NodeRenderReturnType.html)
  5. ```tsx pure
  6. import { FlowNodeEntity, useNodeRender } from '@flowgram.ai/fixed-layout-editor';
  7. export const BaseNode = ({ node }: { node: FlowNodeEntity }) => {
  8. /**
  9. * 提供节点渲染相关的方法
  10. */
  11. const nodeRender = useNodeRender();
  12. /**
  13. * 只有在节点引擎开启时候才能使用表单
  14. */
  15. const form = nodeRender.form;
  16. return (
  17. <div
  18. className="demo-fixed-node"
  19. /*
  20. * onMouseEnter 加到固定布局节点主要是为了监听 分支线条的 hover 高亮
  21. **/
  22. onMouseEnter={nodeRender.onMouseEnter}
  23. onMouseLeave={nodeRender.onMouseLeave}
  24. onMouseDown={e => {
  25. // trigger drag node
  26. nodeRender.startDrag(e);
  27. e.stopPropagation();
  28. }}
  29. style={{
  30. /**
  31. * 用于精确控制分支节点的样式
  32. * isBlockIcon: 整个 condition 分支的 头部节点
  33. * isBlockOrderIcon: 分支的第一个节点
  34. */
  35. ...(nodeRender.isBlockOrderIcon || nodeRender.isBlockIcon ? { width: 260 } : {}),
  36. }}
  37. >
  38. {form?.render()}
  39. </div>
  40. );
  41. };
  42. ```
  43. ## 自由布局
  44. - Return: [NodeRenderReturnType](https://flowgram.aiauto-docs/free-layout-core/interfaces/NodeRenderReturnType.html)
  45. ```tsx pure
  46. import { WorkflowNodeRenderer, useNodeRender } from '@flowgram.ai/free-layout-editor';
  47. export const BaseNode = () => {
  48. const { form, node } = useNodeRender()
  49. return (
  50. <WorkflowNodeRenderer className="demo-free-node" node={node}>
  51. {form?.render()}
  52. </WorkflowNodeRenderer>
  53. )
  54. }
  55. ```