在 vue3 脚本设置中的 props 上使用 Watchers

Lx4*_*x45 4 javascript vue.js vue-props vuejs3 vue-composition-api

我将一个 prop 传递给一个组件,声明它所处的状态。我想观看 prop 并相应地设置 css。但这不起作用,有人可以告诉我我做错了什么吗?

<script setup>
  import { onMounted, reactive, ref, watch, watchEffect } from 'vue'

  const props = defineProps({
    title: String,
    date: String,
    state: String,
  })

  let cardStatus = ref('')

  watch(props.state, () => {
    if (props.state === 'finished'){
      cardStatus.value = 'border border-success'
    }
  })
</script>

<template>
  <div :class="'bg-main-light rounded-2xl w-full p-3 lg:px-5 ' + cardStatus"></div>
</template>
Run Code Online (Sandbox Code Playgroud)

Nik*_*vic 7

尝试如下:

watch(
  () => props.state,
  (newValue, oldValue) => {
    if (newValue === 'finished') cardStatus.value = 'border border-success'
  }
);
Run Code Online (Sandbox Code Playgroud)

  • @Lx45 它的工作方式应该与您的帖子中的完全相同。 (2认同)
  • 我同意 - 这是如何在道具上使用“watch”,不知道为什么OP无法使其工作,可能做错了什么 - 可能是因为在问题中他更改了“cardStatus.value”并在他的答案中更改了“cardStatusCard”。值` (2认同)