Я пытаюсь найти способ запустить компонент (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);
Возможный дубликат Показать или скрыть элемент в React





Из вашего вопроса я понимаю, что вы хотите вызывать 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);
Где находится ваша кнопка обработчика события onClick и хотите ли вы вызывать FetchData только при нажатии кнопки, это ваш запрос?