React Активировать компонент с помощью кнопки

Я пытаюсь найти способ запустить компонент (FetchData), который представляет собой всплывающую сетку и вытягивание API, через кнопку, поэтому, когда я нажимаю кнопку, компонент отображается. Я не уверен, что здесь делать (новичок в JS). Я использую ящик Material UI. Что-то мне здесь не хватает?

class MiniDrawer extends React.Component {
  state = {
    open: false,
  };

  handleDrawerOpen = () => {
    this.setState({ open: true });
  };

  handleDrawerClose = () => {
    this.setState({ open: false });
  };


  render() {
    const { classes, theme } = this.props;

    return (
      //main part of where help is needed
        <main className = {classes.content}>
          <div className = {classes.toolbar} />

          <Button onClick = {this.handleClick}>{'Get Devices'}</Button>
          <FetchData />

        </main>
      </div>
    );
  }
}

MiniDrawer.propTypes = {
  classes: PropTypes.object.isRequired,
  theme: PropTypes.object.isRequired,
};

export default withStyles(styles, { withTheme: true })(MiniDrawer);

Где находится ваша кнопка обработчика события onClick и хотите ли вы вызывать FetchData только при нажатии кнопки, это ваш запрос?

Hemadri Dasari 25.08.2018 06:52

Возможный дубликат Показать или скрыть элемент в React

jmargolisvt 25.08.2018 06:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
1 130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из вашего вопроса я понимаю, что вы хотите вызывать FetchData только при нажатии кнопки. Если это так, вам нужно иметь логическое значение в состоянии, как показано ниже. Когда кнопка нажата, сделайте это логическое значение true с помощью setState и вызовите компонент FetchData только тогда, когда логическое значение истинно. Теперь вам также нужно сделать его ложным, чтобы он снова работал при нажатии кнопки второй раз. Таким образом, вы можете сделать это в обработчике события закрытия ящика.

class MiniDrawer extends React.Component {
  state = {
    open: false,
    callFetchData: false
  };

  handleDrawerOpen = () => {
    this.setState({ open: true });
  };

  handleDrawerClose = () => {
    this.setState({ open: false, callFetchData: false });
  };

  handleClick = () => {
    this.setState({
      callFetchData: true
    });
  }
  render() {
    const { classes, theme } = this.props;
    const { callFetchData } = this.state;
    return (
      //main part of where help is needed
        <main className = {classes.content}>
          <div className = {classes.toolbar} />

          <Button onClick = {this.handleClick}>{'Get Devices'}</Button>
          {callFetchData && <FetchData />}

        </main>
      </div>
    );
  }
}

MiniDrawer.propTypes = {
  classes: PropTypes.object.isRequired,
  theme: PropTypes.object.isRequired,
};

export default withStyles(styles, { withTheme: true })(MiniDrawer);

Другие вопросы по теме