首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react可排序树的特定节点中添加按钮

如何在react可排序树的特定节点中添加按钮
EN

Stack Overflow用户
提问于 2018-12-19 17:09:42
回答 2查看 5.9K关注 0票数 4

我正在使用react库“react sortable-tree”,我不知道如何只向特定类型的节点添加按钮。例如,节点中的元素有一个特定的值,我需要添加一个按钮来做一些事情。

代码语言:javascript
复制
                <SortableTree
                    canDrop={canDrop}
                    getNodeKey={({ node }) => node.id}
                    treeData={this.state.treeData}
                    onChange={this.onChange}
                    generateNodeProps={({ node, path }) => ({
                        title: (
                            <a href={node.url}>{node.title}</a>
                        ),
                    })}
                />

为了只在某些特定情况下添加按钮,我可以在这个组件中添加什么?

编辑

这样做的目的是只在节点是Web内容时添加按钮

实际上,我是这样做的:

代码语言:javascript
复制
generateNodeProps={({ node, path }) => ({
title: (
    <Row>
        <Col xs={6} sm={6} md={6} lg={6}>
            <a href={node.url}>{node.title}</a>
        </Col>
        <Col xs={6} sm={6} md={6} lg={6}>
            {node.isWebContent &&
                <DefaultButton text='Open editor' />
            }
        </Col>
    </Row>
),
})}

这就是结果:

没有比这更好的方法了?一个好的做法,喜欢不使用产权属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-20 08:22:45

我不知道您的代码是什么样子,但是这样的函数对您有意义吗?

代码语言:javascript
复制
            renderButton = (title) => {
               return title === 'Web Content' ? <button>Your button</button> : null
            }


            <SortableTree
                canDrop={canDrop}
                getNodeKey={({ node }) => node.id}
                treeData={this.state.treeData}
                onChange={this.onChange}
                generateNodeProps={({ node, path }) => ({
                    title: (
                        <a href={node.url}>
                          {node.title}
                          {renderButton(node.title)}
                        </a>
                    ),
                })}
            />
票数 7
EN

Stack Overflow用户

发布于 2019-08-30 19:05:00

可以使用generateNodeProps向呈现的元素添加按钮。有一个专用的buttons支柱(我在2.5.2和2.2.0版本中进行了检查,但我相信它也是早期可用的)。示例:

代码语言:javascript
复制
<SortableTree
    canDrop={canDrop}
    getNodeKey={({ node }) => node.id}
    treeData={this.state.treeData}
    onChange={this.onChange}
    generateNodeProps={extendedNode => ({
        title: (
            <a href={extendedNode.node.url}>{extendedNode.node.title}</a>
        ),
        buttons: extendedNode.node.title === "Web Content" ? [<button>X</button>] : [],
    })}
/>
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53856110

复制
相关文章

相似问题

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