当前位置: 首页 > 面试题库 >

在ReactJS中显示/隐藏组件

澹台景山
2023-03-14
问题内容

我们现在在使用React时遇到了一些问题,但这 有点 归结于我们如何使用React的一部分。

我们应该如何显示/隐藏子组件?

这就是我们的编码方式(这只是组件的片段)…

_click: function() {
  if ($('#add-here').is(':empty'))
    React.render(<Child />, $('#add-here')[0]);
  else
    React.unmountComponentAtNode($('#add-here')[0]);
},
render: function() {
  return(
    <div>
      <div onClick={this._click}>Parent - click me to add child</div>
      <div id="add-here"></div>
    </div>
  )
}

最近,我一直在阅读一些示例,例如应该沿着以下方向进行:

getInitialState: function () {
  return { showChild: false };
},
_click: function() {
  this.setState({showChild: !this.state.showChild});
},
render: function() {
  return(
    <div>
      <div onClick={this._click}>Parent - click me to add child</div>
      {this.state.showChild ? <Child /> : null}
    </div>
  )
}

我应该一直在使用那个React.render()吗?似乎停止了各种各样的事情,如shouldComponentUpdate级联到孩子和诸如e.stopPropagation


问题答案:

我提供了一个工作示例,它遵循您的第二种方法。更新组件的状态是显示/隐藏子级的首选方法。

假设您有这个容器

<div id="container">
</div>

您可以使用现代Javascript(ES6,第一个示例)或经典JavaScript(ES5,第二个示例)来实现组件逻辑:

在JSFiddle上现场试用此演示

class Child extends React.Component {
  render() {
    return (<div>I'm the child</div>);
  }
}

class ShowHide extends React.Component {
  constructor() {
    super();
    this.state = {
      childVisible: false
    }
  }

  render() {
    return (
      <div>
        <div onClick={() => this.onClick()}>
          Parent - click me to show/hide my child
        </div>
        {
          this.state.childVisible
            ? <Child />
            : null
        }
      </div>
    )
  }

  onClick() {
    this.setState(prevState => ({ childVisible: !prevState.childVisible }));
  }
};

React.render(<ShowHide />, document.getElementById('container'));

使用ES5显示/隐藏组件

在JSFiddle上现场试用此演示

var Child = React.createClass({
  render: function() {
    return (<div>I'm the child</div>);
  }
});

var ShowHide = React.createClass({
  getInitialState: function () {
    return { childVisible: false };
  },

  render: function() {
    return (
      <div>
        <div onClick={this.onClick}>
          Parent - click me to show/hide my child
        </div>
        {
          this.state.childVisible
            ? <Child />
            : null
        }
      </div>
    )
  },

  onClick: function() {
    this.setState({childVisible: !this.state.childVisible});
  }
});

React.render(<ShowHide />, document.body);


 类似资料:
  • 我对React Native非常陌生,我想知道如何隐藏/显示组件 这是我的测试用例: 我有一个组件,我想要的是当输入获得焦点时显示,然后当用户按下取消按钮时隐藏。 我不知道如何“访问”TouchableHighlight组件,以便在我的函数中隐藏/显示它 另外,如何从一开始就隐藏按钮?

  • 我一直通过不渲染来隐藏/显示反应组件,例如: 但是只要说

  • 主要内容:实例,jQuery hide() 和 show(),实例,实例,实例,jQuery toggle(),实例隐藏、显示、切换,滑动,淡入淡出,以及动画,哇哦! 因为时间是宝贵的,我们提供快捷方便的学习方法。 在小牛知识库,你可以学习需要的知识。 实例 jQuery hide() 简单的jQuery hide()方法演示。 jQuery hide() 另一个hide()实例。演示如何隐藏文本。 jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和

  • 问题内容: 我有一个包含几列的HTML表,我需要使用jquery实现一个列选择器。当用户单击复选框时,我要隐藏/显示表中的相应列。我想在不将类附加到表中的每个td的情况下执行此操作,是否可以使用jquery选择整个列?以下是HTML的示例。 问题答案: 我想做到这一点而不必在每个td上附加一个类 就个人而言,我会采用“每课时听课/课时/上课”的方法。然后,您可以通过对容器上的className的一

  • 我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一

  • 排除不显示字段 Model.findAll({ attributes: { exclude: ['baz'] } });