Есть чат, в котором списком выводятся сообщения:
<div v-for="message in messages" :key="message.id">
<div><div v-once :inner-html.prop="calcMessage(message.message) | filterMessage"></div></div>
</div>
и JS. Если длительно чата менее N секунд, значит ссылки превращать в "***":
methods: {
calcMessage(message) {
if(this.durationChat < this.noLinksTime)
message = linkify(message);
return message;
}
}
Моим удивлением стало то, что старые сообщения, которые были превращены в звёздочки стали отображаться по истечению срока noLinksTime. Я начал смотреть и оказывается метод calcMessage вызывается каждую секунду или чаще :( А мне это совсем не надо и "v-once" не помогает. Вообще странное поведение, я думал это только computed вызывается несколько раз, а оказывается и методы. Можно ли с этим что то сделать? Не хочу бессмысленно нагружать браузер.
Уточню, что messages - это vuex mapState
Всё-таки VueJS требует компоненты! Добавил шаблон одного сообщения в отдельный компонент SingleMessage.vue. И там v-once уже работал как положено. Более того, при таком подходе всё можно сделать через computed, тогда и в v-once нет необходимости! Но сам v-once с methods протестировал, работает как положено. Удивительно, что помогает создание компонента отдельного, документации пошерстил не могу понять закономерности, а очень хотелось бы. Если кто-то можно объяснить как там на низком уровне происходит реактивность - пишите, пожалуйста
<app-single-message v-for="message in messages" :key="message.id" :message="message">
</app-single-message>
SingleMessage.vue:
<template><div :inner-html.prop="filterMessage"></div></template>
<script>
export default {
props: ['message']
computed: {
filterMessage() {
return linkify(this.message);
}
}
}
</script>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Этот вопрос уже поднимался в этой теме : не запускается скрипт И в конце дали рабочий скрипт,но проблема в том,что когда я начал его использовать...
Массив в js это специализированная форма объекта, а объект в js это ассоциативный массивТ
имеется REST приложение на VueХочу ко всему этому делу прикрутить тестирование на Jest + Vue-test-utils
Подскажите пожалуйста, устанавливается chek даже если input disabledКак сделать что бы check не устанавливался если input disabled?