【问题标题】:Insert a component when clicked and remove the componet when click other than that component单击时插入组件,单击时移除该组件以外的组件
【发布时间】:2016-11-04 14:37:13
【问题描述】:

ContentWithFooterCard 的列表。每个Card 都有一个菜单来标记或删除卡片(文章)。单击icon 时,我只想插入该卡而不是所有卡的菜单(<DeleteFlagPost/>)。同样在插入菜单后,当单击该菜单以外的其他菜单时,将其从菜单组件中删除。我怎么做?我知道这是一个很长的 HOW 清单,但你的帮助真的会帮助我理解更多。谢谢。

ContentWithFooter.js:

class ContentWithFooter extends React.Component {
    render() {
        return(
            <div>
                <Card/>
                <Card/>
                <Card/>
            </div>
        );
    }
}

卡片.js

class Card extends React.Component {
    handleDeleteFlag() {
        return(
            // GET THE CLICKED OBJECT OF THIS CARD AND INSERT <DeleteFlagPost/>???
        );
    }
    render() {
        return(
            <article class="article">
            ...
                <div class="delete-flag-post-btn">
                    <i class="fa fa-ellipsis-v" aria-hidden="true" onClick={this.handleDeleteFlag}></i>

                    // INSERT THE <DeleteFlagPost/> here when clicked on I element...

                </div>
            ...
            ...
            </article>
        );
    }
}

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:
    Keep active card in the contentwithfooter
    
     class ContentWithFooter extends React.Component {
        updateMenuForCards(cardNumActive) {
          this.setState({
              cardNumActive
          })
        }
        render() {
            return(
                <div>
                    <Card cardNumber= 0 showMenu={cardNumActive === 0} updateMenuForCards={updateMenuForCards}/>
                    <Card cardNumber= 1 showMenu={cardNumActive === 0} updateMenuForCards={updateMenuForCards}/>
                    <Card cardNumber= 2 showMenu={cardNumActive === 0} updateMenuForCards={updateMenuForCards}/>
                </div>
            );
        }
    }
    
        class Card extends React.Component {
                constructor() {
                   super(props);
                }
    
                handleDeleteFlag() {
                    this.props.updateMenuForCards(this.props.cardNumber)
                }
                renderDeleteFlag() {
                    if (this.props.showMenu) {
                        return (<DeleteFlag/>)
                    }
                }
                render() {
                    return(
                        <article class="article">
                        ...
                            <div class="delete-flag-post-btn">
                                <i class="fa fa-ellipsis-v" aria-hidden="true" onClick={this.handleDeleteFlag}></i>
    
                                {this.renderDeleteFlag()}
    
                            </div>
                        ...
                        ...
                        </article>
                    );
    

    【讨论】:

    • 点击该组件以外的组件时如何移除该组件?
    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2017-09-23
    • 2018-04-08
    • 2018-12-29
    相关资源
    最近更新 更多