• Как в Vue правильно отобразить дату и время?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Вот как это делать согласно лучших практик:
    <template>
    <div>
        <!-- В шаблоне не вызывают какие-либо функций. Только выводят готовые значения -->
        {{localeDate}}
    </div>
    </template>
    
    <script>
    {
        data: () => ({
            // Дата хранится в виде числа. Не обязательно в state компонента. Но и в других местах тоже
            date: 1580558031264,
        }),
        
        computed: {
            localeDate() {
                // Конвертируем число в строку. Для этого существуют специальные методы
                // toLocaleDateString() или toLocaleString() или toLocaleTimeString()
                // Итоговая строка будет зависеть от локализации системы пользователя. 
                // Для русской локали это будет "01.02.2020", 
                // для американской "2/1/2020", 
                // для немецкой — "1.2.2020"
                // Вы НЕ должны устанавливать формат даты самостоятельно
                return (new Date(this.date)).toLocaleDateString() 
            },
        },
    
        // Если нужно изменять дату в реальном времени вешаем таймер
        created() {
            this.intervalId = setInterval(() => this.date = Date.now(), 1000); // Обновляем значения не чаще раза в секунду. А то и реже.
        },
    
        // Если повесили таймер, то его нужно отключать
        beforeDestroy() {
            if (this.intervalId) clearInterval(this.intervalId)
        },
    }
    </script>
    Ответ написан
    2 комментария