首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单击delete按钮的同时删除react-flow中的元素

如何在单击delete按钮的同时删除react-flow中的元素
EN

Stack Overflow用户
提问于 2021-08-08 06:16:19
回答 2查看 2.4K关注 0票数 1

我在我的项目中使用了react-flow-renderer。我们有一个要求,我们想要通过单击该元素来删除它。

我已经尝试了下面的代码。

代码语言:javascript
复制
const onElementsRemove = (elementsToRemove) =>
setElements((els) => removeElements(elementsToRemove, els));

我还把这个

但我们不希望这样。

有谁知道怎么做吗?这将是一个很大的帮助。

EN

回答 2

Stack Overflow用户

发布于 2021-09-03 19:58:23

实际上,我自己使用带有自定义删除按钮的React流控件解决了这个问题。在<ReactFlow>组件中,我添加了onElementClick prop,它使用React钩子来存储状态中的选定元素。在按钮的onClick属性中,我有另一个钩子,它从状态中获取所选元素,树的所有边,并调用getConnectedEdges(),它将返回连接到所选元素的所有边。然后,只需将包含所选元素和连接边的数组传递给onElementsRemove()

以下是onElementClick的文档。https://reactflow.dev/docs/api/component-props/

代码语言:javascript
复制
<ReactFlow 
    className={flowStyles}
    elements={elements}
    onElementClick={onClickElement}
>
  <Controls showInteractive={false}>
    <ControlButton onClick={onClickElementDelete}>
      <DeleteIcon />
    </ControlButton>
  </Controls>
</ReactFlow>

代码语言:javascript
复制
const onClickElement = useCallback((event: ReactMouseEvent, element: Node | Edge) => {
  // Set the clicked element in local state
  setState({
    clickedElement: [element]
  })
}, [])

以下是getConnectedEdges的文档。https://reactflow.dev/docs/api/helper-functions/

代码语言:javascript
复制
  const onClickElementDelete = useCallback(() => {
    // Get all edges for the flow
    const edges = elements.filter((element: Node | Edge) => isEdge(element))
    // Get edges connected to selected node
    const edgesToRemove = getConnectedEdges(state.clickedElement, edges)

    onElementsRemove([...state.clickedElement, ...edgesToRemove])
    }
  }, [elements, onElementsRemove, state.clickedElement])

票数 5
EN

Stack Overflow用户

发布于 2021-09-29 17:33:17

您必须在自定义节点的data属性中添加delete函数,单击自定义节点的delete按钮时,必须调用该函数

创建自定义节点=>时

代码语言:javascript
复制
const newNode = {
  id: nodeID,
  type,
  position,
  data: {
      onDelete : yourFunctionToDelete
  }}

删除按钮=> onClick={props.data.onDelete}中的自定义节点代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68698247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档