2015-09-02 4 views
0

Я пытаюсь показать/скрыть компоненты в ReactJs в течение нескольких дней. Я пытаюсь показать («Write (blocks)» - который должен быть скрыт от просмотра по умолчанию) и показан при нажатии «править» ссылки (при переключении скрыть/показать для блоков «Чтение») и скрыть их когда нажаты кнопки «сохранить» или «отменить», я буду заботиться о функции сохранения позже. Пока я просто пытаюсь показать/скрыть компонент на основе этого.Переключить отображение и скрытие компонентов в ReactJs

Ниже мой код:

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">[email protected]<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 в проекте. Благодарю.

ответ

2

Это образец, который я бы использовал.

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> 
     ) 
    } 

Я использую шкурку, так что я не должен писать, если (! This.props.show) обратный нуль ;.

Смежные вопросы