incrementCount = (id, name, price) => {
this.setState(({ count }) => {
const el = count.find(n => n.id === id);
return {
count: el
? count.map(n => n === el ? { ...n, count: n.count + 1 } : n)
: [ ...count, { id, name, price, count: 1 } ]
};
});
}
this.state.count.reduce((acc, n) => acc + n.price * n.count, 0)
const parseDate = str => new Date(str.split('/').reverse().join('-'));
all_orders.sort((a, b) => parseDate(a.order_date) - parseDate(b.order_date));
const sortedOrders = all_orders
.map(n => [ n, parseDate(n.order_date) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0]);
str.replace(/(?<=.{2}).(?=.{2})/g, '*')
// или
str.replace(/^(.{2})(.+)(.{2})$/, (m, g1, g2, g3) => g1 + '*'.repeat(g2.length) + g3)
// или
Array.from(str, (n, i) => (i < 2 || i > str.length - 3) ? n : '*').join('')
.big-dropdown > .dropdown > button[aria-expanded="true"]::after {
content: "\25B2";
}
const onClickRow = () => {
console.log('Строка');
};
const onClickButton = e => {
e.stopPropagation();
console.log('Кнопка');
};
<div onClick={onClickRow}>
<button onClick={onClickButton}>click me</button>
</div>
const onClickRow = e => {
if (e.target.tagName === 'BUTTON') {
console.log('Кнопка');
} else {
console.log('Строка');
}
};
<div onClick={onClickRow}>
<button>click me</button>
</div>
[...Array(12)].map((n, i) => new Date(0, i).toLocaleString('en-US', { month: 'long' }))
Как правильно описать контролируемый компонент (Controlled Components)?
Warning: A component is changing an uncontrolled input of type radio to be controlled.
checked
радиокнопки, а при повторном рендеринге задаёте. Как такое могло случится - свойство стейта, значение которого должно выступать в качестве значения checked
, изначально не определено или определено криво - там null
. А должно быть true
или false
. Надо исправить дефолтный стейт.помимо event
мне нужно передать еще параметры
onClick={this.handleClickAnswerCheck.bind(this, param1, param2)}>
handleClickAnswerCheck = (param1, param2) => { ... //как запустить здесь //event.preventDefault(); или event.target... //?
bind
, вовсе не означает, что она не может принимать иных значений, помимо привязанных. Чтобы получить доступ к объекту события, надо его в списке параметров указать - после тех, чьи значения вы привязываете:<button onClick={this.onClick.bind(this, param1, param2)}>click me</button>
onClick(param1, param2, e) {
e.preventDefault();
console.log(e.target);
}
<button onClick={e => this.onClick(e, param1, param2)}>click me</button>
onClick(e, param1, param2) {
...
}
<button onClick={this.onClick} data-param1={param1} data-param2={param2}>click me</button>
onClick = e => {
const { param1, param2 } = e.target.dataset;
...
}
computed: {
disabled() {
return !this.selected.length;
},
},
<v-btn
:disabled="disabled"
...
Object.entries(arr.reduce((acc, n) => {
const [ k, v ] = Object.entries(n)[0];
(acc[k] = acc[k] || []).push(...v);
return acc;
}, {})).map(n => Object.fromEntries([ n ]))
Пробовал ставить перед скобкой «\» не работает.
const createXML = obj => Object
.entries(obj)
.map(([ k, v ]) => `<ns1:${k}>${v instanceof Object ? createXML(v) : v}</ns1:${k}>`)
.join('');
const createXML = (obj, tabSize = 2, depth = 0) => {
const indent = ' '.repeat(tabSize * depth);
return Object.entries(obj).map(([ k, v ]) =>
indent +
`<ns1:${k}>${
v instanceof Object
? `\n${createXML(v, tabSize, depth + 1)}\n${indent}`
: v
}</ns1:${k}>`
).join('\n');
};
modal.style.display = "none"
делайте modal.remove()
, и всё будет окей. <div id="address-list"></div>
const addressList = document.querySelector('#address-list');
addressList.innerHTML = markersData.map((n, i) => `
<div class="address-list-item">
<span data-index="${i}">${n.name}</span>
</div>
`).join('');
addressList.addEventListener('click', e => {
const marker = markersData[e.target.dataset.index];
if (marker) {
map.setCenter(new google.maps.LatLng(marker.lat, marker.lng));
}
});
<div><label><input type="checkbox" id="xxx">hello, world!!</label></div>
<div><label><input type="checkbox" id="yyy">fuck the world</label></div>
<div><label><input type="checkbox" id="zzz">fuck everything</label></div>
<div>sum: <input id="sum" readonly></div>
<div>ids: <input id="ids" readonly></div>
document.addEventListener('change', () => {
const cb = document.querySelectorAll('input[type="checkbox"]:checked');
document.querySelector('#sum').value = cb.length * 900;
document.querySelector('#ids').value = Array.from(cb, n => n.id).join(', ');
});
Может написать регулярку, которая будет убирать только первый и последнии слеши?
.slice(1, -1)
.regexp
используется только для задания значений атрибута pattern
, то пусть его свойства будут сразу строками, а не регулярными выражениями. И ещё, зачем делать его обычным полем класса? - так будет создаваться отдельный объект для каждого экземпляра. Пусть будет статическим или вообще не принадлежит классу.