идентичны
l
и 1
совсем не одно и то же.console.log(this.$slots.header) // не работает
created () {
function App() {
const [ seconds, setSeconds ] = React.useState(60);
const [ timerActive, setTimerActive ] = React.useState(false);
React.useEffect(() => {
if (seconds > 0 && timerActive) {
setTimeout(setSeconds, 100, seconds - 1);
} else {
setTimerActive(false);
}
}, [ seconds, timerActive ]);
return (
<div>
{seconds
? <React.Fragment>
<button onClick={() => setTimerActive(!timerActive)}>
{timerActive ? 'stop' : 'start'}
</button>
<div>{seconds}</div>
</React.Fragment>
: <button onClick={() => setSeconds(60)}>ещё раз</button>
}
</div>
);
}
const prices = {
'Москва': 100,
'Санкт-Петербург': 200,
'Казань': 300,
};
$('form').on('change', function() {
const [ city1, city2 ] = $('select', this).get().map(n => n.value);
const price = city1 === city2
? prices[city1]
: prices[city1] + prices[city2];
$('input', this).val(price);
}).change();
button.addEventListener('click', async () => {
for (const el of cards) {
await el.animate([
{ transform: 'rotateX(0deg)' },
{ transform: 'rotateX(180deg)' },
], {
duration: 1000,
easing: 'linear',
fill: 'forwards',
}).finished;
}
});
Пробовал через emit передать, но получилось перехватить событие только в App.vue, но не в Modal.vue
const container = document.querySelector('.buttons');
const buttonSelector = '.button';
const onButtonClick = button => console.log(button.id);
container.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
onButtonClick(button);
}
});
container.querySelectorAll(buttonSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => onButtonClick(e.currentTarget));
Например если число 200000
useEffect(() => {
axios.get('/api/products/random-lucky-box').then(r => setProduct(r.data));
}, []);
useEffect(() => {
if (product.catId) {
axios.get(`/api/categories/${product.catId}`).then(r => setCategory(r.data));
}
}, [ product ]);
const bullshitDateFormat = str =>
new Date(+str.replace(/\D/g, ''))
.toLocaleString('ru-RU')
.slice(0, -3)
.replace(',', '');
.slice(0, -3)
выглядит сильно так себе (с другой стороны - коротко), вместо него можно в явном виде (второй параметр) указать при вызове toLocaleString, какие элементы даты надо получить:{
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
}
HTML5 specifies that a <script>
tag inserted with innerHTML should not execute.
script
вручную. Точнее - заменим тот, что есть, на новый с таким же src.div(v-html="сontent" ref="content")
watch: {
content() {
this.$nextTick(() => {
const oldScript = this.$refs.content.querySelector('script');
const newScript = document.createElement('script');
newScript.src = oldScript.src;
oldScript.parentNode.replaceChild(newScript, oldScript);
});
},
},
Object.values(arr.reduce((acc, n) => {
const name = n.name.split(' ').pop();
acc[name] = +acc[name]?.price < +n.price ? acc[name] : n;
return acc;
}, {}))
data: () => ({
activeItem: null,
items: [
{
id: 69,
name: 'hello, world!!',
colors: [ 'white', 'blue', 'red' ],
color: null,
},
{
id: 187,
name: 'fuck the world',
colors: [ 'red', 'green', 'blue' ],
color: null,
},
{
id: 666,
name: 'fuck everything',
colors: [ '#fb1', '#e2c', '#3a9', '#cb9' ],
color: null,
},
],
}),
<v-btn-toggle class="mb-10" v-model="activeItem">
<v-btn color="#546E7A" v-for="n in items" :key="n.id" :value="n">
{{ n.name }}
<v-badge v-if="n.color" :color="n.color" bordered inline tile></v-badge>
</v-btn>
</v-btn-toggle>
<v-spacer></v-spacer>
<v-btn-toggle v-if="activeItem" v-model="activeItem.color">
<v-btn v-for="n in activeItem.colors" :key="n" :color="n" :value="n"></v-btn>
</v-btn-toggle>