Пытаюсь сделать простые нотифы. Жмем на кнопку, появляется уведомление. Если много раз нажимать, то они появятся стопочкой. Это худо-бедно реализовано:
class App extends React.Component {
state = { messages: [] };
addItem() {
this.state.messages.push('Hello Snackbar!');
this.setState({ messages: this.state.messages });
}
render() {
let notify = this.state.messages.map((item, index) => {
return <div className="notify" key={index}>{item}</div>;
});
return (
<div>
<button className="notify-button" onClick={this.addItem.bind(this)}>Show Snackbar</button>
<div>{notify}</div>
</div>
);
}
}
Теперь ломаю голову над тем, чтобы каждый нотиф появлялся на несколько секунд, а потом исчезал. Знаю, что нужно использовать функцию с setTimeout, но пока не могу сообразить как. Заранее спасибо за любую помощь. В голове пока крутится только что-то такое:
showNotification = () =>
this.setState({ show: true },
function() {
setTimeout(this.hideNotification, 2000);
});
hideNotification = () => this.setState({ show: false });
Можно добавить метод удаления элемента из массива, и вызывать его в addItem через setTimeout.
class App extends React.Component {
state = { messages: [] };
addItem() {
this.setState((prevState) => {
return {
messages: [
...prevState.messages,
'Hello Snackbar!'
]
}
});
setTimeout(() => {
this.removeItem();
}, 1000)
}
removeItem() {
const { messages } = this.state;
if (messages.length) {
this.setState({
messages: messages.slice(1)
});
}
}
render() {
let notify = this.state.messages.map((item, index) => {
return <div className="notify" key={index}>{item}</div>;
});
return (
<div>
<button className="notify-button" onClick={this.addItem.bind(this)}>Show Snackbar</button>
<div>{notify}</div>
</div>
);
}
}
Sandbox
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Прочитал статью на хабре об использовании Python в многопоточном приложении с++ с использованием субинтерпретаторовПри этом, как заявляется...
Необходимо блок поместить в рамкуНо при border: solid 1px grey; отображается только верхняя часть рамки(не хватает нижней рамки, правой и левой)
Похоже, аутлук добавляет таблицам отступы слева и справа, так как есть таблицы 290рх + 20рх + 290рх и они не влазят в общую таблицу шириной 600рхМожет...