javascript - 在 ReactJs 中切换显示和隐藏组件

标签 javascript reactjs

这几天我一直在努力在 ReactJs 中显示/隐藏组件。我试图显示(“写入( block )” - 默认情况下需要从 View 中隐藏)并在单击“编辑”链接时显示(同时切换“读取” block 的隐藏/显示)并隐藏它们当单击“保存”或“取消”按钮时,我将在稍后处理保存功能。现在我只是尝试基于此显示/隐藏组件。

下面是我的代码:

class ProfileSettings extends React.Component {

  render() {
    return (
      <div className="ProfileSettings">

        <SettingsBlock className="Names" label="Name" link="name">
          <p className="readOnlySettingField ReadNames">Hilal Agil<a href="#">Edit</a></p>

          <div className="WriteNames">
            <SubBlock label="First Name" placeholder="First Name" />
            <SubBlock label="Middle Name" placeholder="Middle Name" />
            <SubBlock label="Last Name" placeholder="Last Name" />
            <p className="notice"><strong>Please note:</strong> You wont be able to change your name within the next 30 days. 
            Make sure not to add any unusual capitalization, punctuation, characters or random words.</p>
            <button className="button small fill primary">Save Changes</button>
            <button className="button small default">Cancel</button>
          </div>
        </SettingsBlock>

        <SettingsBlock label="Username" link="username">

          <p className="readOnlySettingField ReadUsername">www.squelo.com/hilarl<a href="#">Edit</a></p>

          <div className="WriteUsername">
            <p className="notice url">squelo.com/hilarl</p>
            <Input placeholder="Username" classes="col-md-7" />
            <p className="notice"><strong>Please note:</strong> Your username can only be changed once and should include your authentic name.</p>
            <button className="button small fill primary">Save Changes</button>
            <button className="button small default">Cancel</button>
          </div>
        </SettingsBlock>

        <SettingsBlock label="Email" link="email">
          <p className="readOnlySettingField ReadEmail">hilal@gmail.com<a href="#">Edit</a></p>

          <div className="WriteEmail">
            <Input placeholder="Email" classes="col-md-9" />
            <p className="notice"><strong>Please note:</strong> Your username can only be changed once and should include your authentic name.</p>
            <button className="button small fill primary">Save Changes</button>
            <button className="button small default">Cancel</button>
          </div>
        </SettingsBlock>

        <SettingsBlock className="Password" label="Password" link="password">
          <p className="readOnlySettingField ReadPassword">Password last changed over a year ago<a href="#">Edit</a></p>

          <div className="WritePassword">
            <SubBlock label="Current" placeholder="Current" />
            <SubBlock label="New" placeholder="New" />
            <SubBlock label="Re-type new" placeholder="Re-type new" />
            <p className="notice"><a href="#">Forgot password?</a></p>
            <button className="button small fill primary">Save Changes</button>
            <button className="button small default">Cancel</button>
          </div>
        </SettingsBlock>
      </div>
    );
  }

}

如果有人能举例说明如何在这种情况下实现这一目标,那就太好了。我自己花了很多时间来解决这个问题,这是我第一次在项目中使用 ReactJs。谢谢。

最佳答案

这是我要使用的模式。

    render() {
        var hideWriteBlock = (show hide logic);
        var hideReadBlock = (show hide logic);
        return (
            <div className="ProfileSettings">

                <SettingsBlock className="Names" label="Name" link="name" hide={hideWriteBlock}>

在设置组件中;

    render() {
        if (this.props.hide) return null;
        return (
            <div>
                {this.props.children}
            </div>
        )
    }

我使用hide,这样我就不必编写if (!this.props.show) return null;。

关于javascript - 在 ReactJs 中切换显示和隐藏组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359542/

相关文章:

javascript - Express 将在本地主机上正确设置 CORS,但不会在实时服务器上设置

reactjs - 记住 JSX 元素以便稍后将它们通过 props 传递给拥有的组件是否安全?

javascript - 在 highcharts 中使用动态 html 渲染标题

reactjs - 在构造函数或声明中初始化变量

javascript - react 导出函数与导出常量 : FC

reactjs - Typescript + React 测试库 - 'SidebarItem' 指的是一个值,但在这里被用作类型。你的意思是 'typeof SidebarItem' ?ts(2749)

javascript - 如何在函数执行期间暂停所有 jQuery 函数和 DOM 加载?

javascript - 将对象数组中的每个对象的键放入数组 : Javascript

javascript - Socket IO 客户端接收的对象与服务器发送的对象不同

javascript - Vue.js:使用带有 v-for 的对象进行双向数据绑定(bind)