if (!formElementsByGroup[formType]) {
formElementsByGroup[formType] = [];
}
const formElementsByGroup = formElements.reduce((acc, n) => {
const type = searchForm[n].formType;
(acc[type] = acc[type] || []).push(n);
return acc;
}, {});
почему при закрытии через метод Close - окно потом не открывается?!?!
this.show = false;
show: { required: true, type: Boolean, twoWay: false }
$('.big-fig').html(content);
.const image = document.querySelector('.big-img');
const text = document.querySelector('.big-fig');
document.querySelectorAll('.small-img').forEach(n => {
n.addEventListener('click', onClick);
});
function onClick() {
image.src = this.src;
text.innerHTML = this.closest('figure').querySelector('.small-fig').innerHTML;
}
Проблема в том, что второй компонент не выводит ни одного console.log().
Как это сделали авторы jQuery - у них-то все работает?
Этот метод стоит на событие onChange.
handleChange = ({ target: { value, dataset: { type } } }) => {
if (value.length <= limits.user.max) {
this.setState({
[type]: value,
});
}
}
<input onChange={this.handleChange} data-type="xxx">
<input onChange={this.handleChange} data-type="yyy">
<input onChange={this.handleChange} data-type="zzz">
Как это можно исправить?
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/:user/:commit" component={CommitPage} />
<Route path="/:user" component={UserPage} />
</Switch>
Что стоит изучить, чтоб разобраться в вопросе?
<form>
<div><input data-output="#output1"></div>
<div><input data-output="#output2"></div>
<div><textarea data-output="#output3"></textarea></div>
</form>
<div id="output1"></div>
<div id="output2"></div>
<div id="output3"></div>
document.querySelector('form').addEventListener('input', e => {
const output = document.querySelector(e.target.dataset.output);
if (output) {
output.innerHTML = e.target.value;
}
});
<form>
<div><input></div>
<div><input></div>
<div><textarea></textarea></div>
</form>
<div class="output"></div>
<div class="output"></div>
<div class="output"></div>
const input = [...document.querySelector('form').elements];
const output = document.querySelectorAll('.output');
const onInput = ({ target: t }) => output[input.indexOf(t)].innerText = t.value;
input.forEach(n => n.addEventListener('input', onInput));
Но как мне их передать в дочку на отображение ?
<SearchHub error={error} isLoaded={isLoaded} items={items} />
class SearchHub extends Component {
render(){
const { error, isLoaded, items } = this.props;
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <Loader type="big" active> </Loader>;
} else {
return (
<div className={styles.parent}>
<div>
{items.map(item => (
<Gapped gap={20} key={item.name}>
<span><b>{item.rating.totalLove}</b></span>
<span><img src={shape} alt="heart"/></span>
<span><img src={item.avatarUri} alt="avatar" className={styles.photo}/></span>
<span>{item.name}<br/>{item.role}</span>
</Gapped>
))}
</div>
</div>
);
}
}
}
const sortedData = Object
.entries(data)
.map(([ key, val ]) => ({ ...val, id: key }))
.sort((a, b) => b.id - a.id);
Как сделать, чтоб метод из watch отрабатывал только при изменении полей пользователем?
if (this.articleArray.indexOf(data) === -1) { this.articleArray.push(data)
всё равно добавляется
if (!this.articleArray.some(n => n.id === data.id)) {
...
computed: {
articleIds() {
return new Set(this.articleArray.map(n => n.id));
},
...
if (!this.articleIds.has(data.id)) {
...
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
login VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
В качестве ширины флекс-контейнера (570px) задаю сумму ширин флекс-элементов (390px + 180px).
margin: 0 auto
элементу .subscribe-form
, например.