Поддерживать начальное состояние формы

#reactjs #state

#reactjs #состояние

Вопрос:

во время изучения react я создал меню и по щелчку меню открываю форму. я хочу иметь значок «закрыть» в форме, который при нажатии закрывает форму и снова открывает ее при нажатии на меню.

я создал родительский компонент, который обрабатывает состояние формы (дочерний компонент). он управляет showchild = true или false .

 //this is button defined on form compenent
 <button onClick={this.props.onClose}>Self Close</button>


//this is parent component
import React from 'react';
import DemoForm from './form';

class ParentComponent extends React.Component {
    closeChild = () => {
      this.setState({
        showChild: false,
      });
    };

 constructor(props) {
      super(props);
      this.state = {
        showChild: true
      };
    }
   render() {
      return (
        <div>
          {this.state.showChild amp;amp; <DemoForm onClose={this.closeChild} />}
        </div>
      );
    }
  }

export default ParentComponent;
 

это работает нормально, при нажатии кнопки форма закрывается, я проверил реакцию, состояние формы изменяется с showchild true на false. проблема в том, что в следующий раз, когда я попытаюсь щелкнуть меню, чтобы открыть эту форму, форма не откроется. потому что состояние showchild = false .

можем ли мы изменить состояние формы на showchild = true, как только форма будет окончательно закрыта, или любой другой метод.

как я могу этого добиться? я все еще реагирую, и следующей целью является сокращение. могу ли я сделать это с помощью управления состоянием реакции.

Комментарии:

1. Можете ли вы показать код для логики открытия формы?

2. это просто из react-router-dom

Ответ №1:

Вы просто меняете эту closeChild() функцию на triggerMenu() , поэтому, когда она открыта, она закроется, а когда она закрыта, она откроется:

     triggerMenu = () => {
        this.setState((prevState) => {
            showChild: !prevState.showChild
        })
    };
 

Комментарии:

1. @Phillip да, извините, я пропустил это. Отредактируйте ответ, спасибо

2. closeChild = () => { this.setState(prevState => ({ showChild : !prevState.showChild })); }; я сделал это, но все то же самое, не могу открыть форму 2-й раз.

3. @RanuVijay это должно сработать, убедитесь, что вы указали onClose и onClick оба closeChild . Поскольку этот код обновляет состояние из true to false и из false to true

4. @ErtanHasani когда я проверяю инструмент разработчика react, чтобы узнать состояние формы после нажатия кнопки, он показывает «showChild: false», и именно по этой причине я не могу открыть его во второй раз.

5. ` <кнопка onClick={this.props.OnClose}>Самозакрывается</button> from form and <Демоформировать OnClose={this.closeChild} />` из родительского компонента уже указывает на closeChild