You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3组件如何通过defineProps传递并显示当前日期时间?

Vue3 通过 defineProps 传递并显示当前日期时间的解决方案

问题根源

你直接写 dateandtime="new Date().toLocaleString()" 时,Vue 会把它当作普通字符串传递,不会执行这个 JavaScript 表达式,自然拿不到正确的日期时间值。必须用 v-bind(简写为冒号 :)绑定表达式,才能让 Vue 执行代码并传递结果。

完整解决方案

1. 子组件(Header.vue)代码

保留你的 props 定义,同时在模板中渲染接收的值:

<script setup>
// 定义 props,指定类型和可选默认值
const props = defineProps({
  dateandtime: {
    type: String,
    // 可选:父组件未传值时,默认显示当前时间
    default: () => new Date().toLocaleString()
  }
})
</script>

<template>
  <header>当前日期时间:{{ dateandtime }}</header>
</template>

2. 父组件调用方式

用冒号绑定表达式,传递实时的日期时间结果:

<template>
  <!-- 用 :dateandtime 绑定表达式,执行并传递日期时间值 -->
  <Header :dateandtime="new Date().toLocaleString()" />
</template>

<script setup>
import Header from './components/Header.vue' // 注意路径需匹配你的项目结构
</script>

进阶:实现实时更新时间

如果需要每秒刷新日期时间,在父组件中用定时器配合 ref 实现:

<template>
  <Header :dateandtime="currentTime" />
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
import Header from './components/Header.vue'

const currentTime = ref(new Date().toLocaleString())
let timer = null

onMounted(() => {
  // 每秒更新一次时间
  timer = setInterval(() => {
    currentTime.value = new Date().toLocaleString()
  }, 1000)
})

onUnmounted(() => {
  // 组件销毁时清除定时器,避免内存泄漏
  clearInterval(timer)
})
</script>

内容的提问来源于stack exchange,提问作者boui3ado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:35:08