javascript - vue.js 的意外选择下拉行为
问题描述
如果我从元素中删除background-green
类绑定或value
绑定,select
那么它就像一个正常的下拉菜单一样工作。但是假设我没有删除background-green
类绑定,然后在选择后,不会显示所选选项,但是如果我再次选择相同的所选选项或其他选项,则会显示它。与value
绑定相同的行为。那么为什么它第二次工作呢?这是我真正关心/困惑的问题。
这是带有示例代码的运行示例的链接。
解决方案
问题是:value="defaultValue"
实际上没有改变(因为defaultValue
永远不会改变)和第一次发生重新渲染的副作用的混合。
因为:value
is 本质上是 always ""
,所以任何时候<select>
重新渲染,Vue 都会将值设置为那个空字符串。
您已handleInput
设置fillBg = true
触发重新渲染,因为background-green
不在初始渲染中。这意味着Vue会将后面的值重置<select>
为defaultValue
(空白)
在第一次选择后它似乎工作的时间里,实际发生的是 DOM 本地状态显示您选择的内容。由于 vdom 没有变化(背景绿色已经存在),Vue不会重新渲染,因此不会重置值。
解决此问题的正确方法是defaultValue
在输入事件期间更新(可能重命名)或使用v-model
. 关键是让 Vue 在渲染时设置正确的值。
handleInput(e) {
this.fillBg = true;
this.defaultValue = e.target.value;
},
推荐阅读
- javascript - 传单图像覆盖在 Svelte 中不起作用
- java - 为每个按钮单击添加新按钮和微调器
- java - Java 代码在 Windows 中有效,但在 Linux(Fedora 或 Ubuntu)中无效
- php - 发布 php qr 颜色代码值不适用于表单
- c# - Webclient 在 .NET Core/5 中失败,但在 .NET 框架中失败
- typescript - 自定义类型不可分配给字符串索引类型
- python - 保存和加载使用自定义模型作为层的 tf.keras 模型
- javascript - 权限禁用向 app.js 中的 customRoutes 添加路由的选项
- linux - LINUX SHELL SCRIPT 分配随机字符串作为密码
- node.js - 创建服务器并使用 nodemon 但它显示错误