function isPermittedObject(obj) {
if (!obj) return false;
const permitted = new Set(["v", "c", "g"]);
let max = 1;
for (const key in obj)
if (!permitted.has(key) || !max--)
return false;
return true;
}
console.log(!isPermittedObject({
v: 1,
c: 3,
g: 5
}))
console.log(!isPermittedObject({
v: 1
}))
calc(100vw - 100%)
- ширина сколлбара. Используя это - можно что-то намагичить.:)calc(min(100vw - 100%, 1px) * 10)
, где результат min будет 1px или 0px в зависимости от наличия скроллбара, а 10 - любой нужный множитель.:)useApiFetch
, очень многое в vue 3 можно сломать неудачной деструктуризацией. Но допустим сам хук нормальный.isPending
- это ref
, а значит он и должен быть прокси, чтоб собственно работала энтая самая реактивность. Чтоб отобразить в консоли чистый объект - есть хэлпер toRaw
(только после этого он уже не будет динамическим).isPending.value
- то в консоль, очевидно, попадает значение на момент вызова console.log
. Магическим образом прямо в консоли оно уже не изменится.isPending
- можешь сделать так:watch(isPending, (value) => console.log('watch isPending', value), { immediate: true });
{
beforeCreate() {
this._oldTitle = document.title;
},
unmounted() {
if (this.PAGE_TITLE)
document.title = this._oldTitle;
},
watch: {
PAGE_TITLE: {
handler(val, oldVal) {
if (val)
document.title = val;
else
document.title = this._oldTitle;
},
immediate: true
},
}
}
this.PAGE_TITLE
. const PAGE_TITLE = ref('<title>'); // computed(() => ...)
// ...
return {
PAGE_TITLE,
// ...
}
+ expose({ PAGE_TITLE })
foo?.bar
) или nullish coalescing (foo ?? bar
), а версия браузера у вас там старая и не поддерживает такой фичи.Chrome <= 70
(а не last 1
, что там скорее всего по умолчанию), чтоб при билде он эти фичи заменил на старые альтернативы. class Users {
constructor() {
this.store = []
}
[Symbol.iterator] = () => this.store[Symbol.iterator]()
}
Но взможно вам проще и красивее будет сделать самих User'ов наследником массива: class Users extends Array {
constructor() {
super();
}
}
И использовать сразу this
вместо this.store
со всеми методами массива кроме тех которые вы переопределите:). let newsListItem = defineProps({
newsListItem: Object
});
defineProps({
newsListItem: Object
});
const props = defineProps({
newsListItem: Object
});