Я думаю, что хороший способ достичь желаемого - добавить еще одно свойство состояния под названием snackBarOpen, которое поможет вам определить, ввел ли пользователь пустое значение или что-то значимое:
Компонент AppSearchBarInput
state = {
appId: '',
snackBarOpen: false
}
handleKeyDown = (e) => {
if (e.keyCode === 13 && e.target.value === '') {
this.setState({
appId: e.target.value,
snackBarOpen: true
});
} else {
this.setState({
appId: e.target.value
})
}
}
handleCloseSnackBar = () => {
this.setState({
snackBarOpen: false
});
}
А затем просто визуализируем также <AppNotFound />
в методе render () (по умолчанию он будет скрыт, поскольку будет зависеть от открытой подпорки):
render() {
const { snackBarOpen } = this.state;
return(
<div>
/* <InputBase /> here */
<AppNotFound message={/* Your message here */} open={snackBarOpen} onClose={this.handleCloseSnackBar} />
</div>
)
}
Компонент AppNotFound
Теперь вы можете удалить все методы и оставить только метод render (), который будет выглядеть следующим образом:
render() {
const { message, open, onClose } = this.props;
return (
<Snackbar
// ...
open={open}
// ...
onClose={onClose}
>
<SnackbarMessage
onClose={onClose}
// ...
message={message}
/>
</Snackbar>
);
}
Надеюсь, что мой ответ будет полезен:)