首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在不重新复制的情况下显示/隐藏父元素?

是否可以在不重新复制的情况下显示/隐藏父元素?
EN

Stack Overflow用户
提问于 2016-05-06 10:16:15
回答 1查看 2.3K关注 0票数 3

如果我的思维过程与React.js的正统思想不同,请纠正我。

我有一个父< MainViewController />,它有一个<View />子。

如果在我的<View />中发生滚动事件,那么我想在我的父< MainViewController />中显示/隐藏一个按钮。

不幸的是,现在,我正在做setState来切换,但是它改变了它的父母,以及相应地,它所有的孩子。基本上,它重置了我的整个应用程序。是否有一种更简单的方式来切换隐藏/显示而不重新显示?

我的相关代码:

代码语言:javascript
运行
复制
var MainViewController = React.createClass({
  getInitialState () {
    return {
      showAskQuestion: false,
    };  
  },
  toggleFloatingButton () {
    this.setState({
      showAskQuestion: !this.state.showAskQuestion
    });
  },
    render () {
        return (
            <Container>
                <UI.NavigationBar name="main" />
        <UI.Button type="info" className={ this.state.showAskQuestion ? '' : 'hidden' } >
          Ask A Question
        </UI.Button>      
                <ViewManager name="main" defaultView="tabs">
                    <View name="tabs" component={TabViewController} toggleFloatingButton={this.toggleFloatingButton} />
                </ViewManager>
            </Container>
        );
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-06 10:25:44

React的核心思想是,当组件中的某些内容发生变化时,它会重新呈现整个组件。为了防止这种情况变得非常缓慢,仅将其呈现到DOM的虚拟表示形式,然后检查虚拟DOM和真实DOM,并进行最小数量的更改以使它们同步。

当您更新组件中的状态时,React将构建虚拟表示,但它将与实际DOM几乎完全相同。唯一的区别是以下属性:

代码语言:javascript
运行
复制
className={ this.state.showAskQuestion ? '' : 'hidden'}

唯一的“实际”重新呈现反应将做,是更新这个属性。

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

https://stackoverflow.com/questions/37069841

复制
相关文章

相似问题

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