exclude: path.resolve(__dirname, 'src/app'),
- это означает что для файлов типа test: /\.(css|sass|scss)$/,
в указанной папке у тебя не будет срабатывать данное правилоERROR in ./src/app/app.component.scss 1:3
import { Fragment } from 'react'; // подключаем react fragment
....
// перед 3-им индексом, вставляем разделитель, индексы нумеруются от 0
render() {
return (
<div>
{
this.props.data.map((item, index) => {
console.log('item', item);
return (
<Fragment key={item.id}>
{index === 3 && (
<div>
разделитель
</div>
)}
<div key={item.id}>
{item.title}
{item.round.map((r) => {
console.log('r', r);
return (
<div key={r.id}>
{r.total}
</div>
)
})}
</div>
</Fragment>
)
})
}
</div>
)
}
var form = document.forms.mess;
var show = false; // флаг показа ошибки
var msg = form.username;
form.addEventListener('submit', function(e){
e.preventDefault();
msg.addEventListener('keydown', function(e){
if(e.keyCode === 13) {
if (this.value !== '') {
console.log(this.value);
this.value = '';
show = false; // тут надо удалить блок с ошибкой и выключить флаг
} else {
alert('Пустое поле - заполните его!');
if (show) return; // если уже показана, то ничего не делаем
show = true; // включаем флаг о том что показано сообщение
var error = document.createElement('p');
error.innerHTML = 'Ошибка ввода!';
error.className = 'error';
form.append(error);
form.previousElementSibling.remove('error');
}
}
});
});
...
onDeleteItem(index) {
const users = this.state.users;
users[index].isDeteted = true;
this.setState({
users,
});
setTimeout(() => {
users.splice(index, 1);
this.setState({
users,
});
}, 300);
}
...
{this.state.users.map((user, index) => (
<UserItem
className={user.isDeteted ? 'class-for-deleted' : ''}
onDelete={this.onDeleteItem.bind(this, index)}
/>
))}
...