【发布时间】:2021-03-31 02:18:36
【问题描述】:
我有一个包含表单的项目。当后端成功接收到表单后,我们应该将按钮换成另一个按钮,以向用户确认他的请求已通过。
但是当我尝试使用 Vue 和转换来执行此操作时,我可以让按钮交换,但淡入和淡出不起作用。按钮会立即交换。
这是模板内带有按钮的过渡:
<transition name="fade" mode="out-in">
<button
v-if="!valid"
class="my-3 px-4 py-3 rounded-md shadow-sm text-base font-medium text-white-primary bg-red-primary hover:bg-red-secondary"
@click="checkForm"
>
Request Beta Access
</button>
<button
v-if="valid"
class="my-3 px-4 py-3 rounded-md shadow-sm text-base font-medium text-white-primary bg-green-300 hover:bg-red-secondary"
@click="checkForm"
>
Request Sended
</button>
</transition>
这是更改我的局部变量有效的函数。此时我正在使用超时来模拟将表单发送到后端。当您将表单发送到后端时,第一个 setTimeout 模拟了一个小的延迟。第二次超时是通过更改本地有效变量来显示成功按钮 2 秒:
async sendBetaRequest () {
setTimeout(() => {
this.clearForm()
this.valid = true
setTimeout(() => {
this.valid = false
}, 2000)
}, 1000)
},
【问题讨论】:
-
你能包含你的 CSS 过渡类吗?
-
我没有 CSS 过渡类。我在 vue 文档 vuejs.org/v2/guide/transitions.html#Transition-Modes 上找到了这个例子。我认为将名称和模式添加到过渡中会进行过渡。
-
您需要在某处定义过渡。最常用的方式是using CSS classes,但也可以使用JavaScript hooks。
-
我不想拥有与 vue 文档示例中的按钮相同的 css。我不知道如何在 css 中做到这一点。
标签: javascript vue.js vue-transitions