当前位置: 首页 > 知识库问答 >
问题:

element-plus为什么要使用const checked1 = ref(true)?直接checked1=true不行吗?

西门胜涝
2024-08-23

如题,我百度了下,因为ref是响应式的,当里面的值变更时,页面也会同步更新。但是我也尝试了普通的<input type=checkedbox checked=flag>,当我在methods里切换flag 的true/false状态时,页面控件的勾选状态也就发生改变。既然如此,为什么还要用ref()函数??还是说因为使用了element-plus的组件所以必须用ref?

共有4个答案

龙飞
2024-08-23

多年后,你会为你提的这个问题羞愧的。
checked 在 普通 input 上只是一个属性,初始值。
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/inp...

宁修永
2024-08-23

看了一下,就是双向数据流和单向数据流的区别

訾晋
2024-08-23

ref的意思这个变量会跟随页面一起动态变化
checked1=true达不到checked1跟着变化
就这么一个作用

尹英华
2024-08-23

我注意到题目中的 methods ,那么我先认为你使用的 options 的写法,类似

<script lang="ts">
import {defineComponent} from 'vue'

export default defineComponent({
  data() {
    return {
      checked: false,
    };
  },
  methods: {
    toggleChecked(){
      this.checked = !this.checked
    },
  },
});
</script>

<template>
  <div>
    <el-checkbox v-model="checked">Test</el-checkbox>
    <div>
      <el-button @click="toggleChecked">Toggle</el-button>
    </div>
  </div>
</template>

<style scoped>

</style>

你可以点击 playground 试一下。

在这段代码中,data 返回的内容已经是响应式内容了,所以当点击按钮触发 toggleChecked 时,checkbox 的选中状态会跟着变化。


我还注意到题目中的 ref ,所以我在这里说一下使用 composition-api 的情况。

<script setup lang="ts">
import {ref} from 'vue'

const checked = ref(false)

function toggleChecked() {
  checked.value = !checked.value
}
</script>

<template>
  <div>
    <el-checkbox v-model="checked">Test</el-checkbox>
    <div>
      <el-button @click="toggleChecked">Toggle</el-button>
    </div>
  </div>
</template>

<style scoped>

</style>

你可以点击 playground 试一下。

在这段代码中,使用 ref 构建了一个响应式数据,当点击按钮触发 toggleChecked 时,checkbox 的选中状态会跟着变化。


如果你好奇不使用 ref 是什么效果,我们也可以简单试一下,你可以点击 playground 看一下效果。

 类似资料:
  • 请看一下这里;谢谢大家!我试图在游戏中创建一个升级建筑的系统。我让我的升级分区对所有建筑都一样。当玩家点击build(div)时,运行一个函数以显示一个隐藏div,该div由ajax post填充,包含升级成本。div的类“name”(与db中的building name相同)被发送到php以获取所需的数据。直到现在它还可以正常工作。。。我在一个按钮中添加了一个click事件,该按钮应将div“n

  • 问题内容: MDC对操作员的描述如下: 如果两个操作数的类型不同,则JavaScript会转换操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果其中一个操作数是字符串,则另一个操作数将尽可能转换为字符串。 考虑到这一点,我将评估如下: 它们是同一类型吗? 没有 操作数是数字还是布尔值? 是 我们可以将它们都转换为数字吗? 否

  • 问题内容: 我的交互式控制台的简要记录: 到底为什么呢? 编辑: 为了对比起见,请考虑运算符。 这使得有很大的意义,因为虽然和都意味着同样的事,作为一个条件语句,他们真的是不一样的东西。 再次编辑: 更有趣的后果: 问题答案: 因为Python中的Boolean是整数的子类型。从文档中: 布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如

  • 在我的clang和libc版本中(靠近),这个传递: 当然,如果你真的试图复制构造一个唯一指针的向量,它无法编译: 我假设这种情况是因为

  • 问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。

  • 问题内容: 我正在使用JDBC连接到MySQL服务器(我认为没有连接池)。在连接网址中,我有 但是我的连接仍然超时。我什至检查了它的错误。但是,当我尝试使用连接时,出现以下异常。 我知道在Java 1.6中可以使用它来检查连接,但是我正在使用Java 1.5 有没有办法确保它不会超时?还是我必须升级到Java 1.6? 问题答案: 我有同样的问题,这绝对令人发疯。这是文档在MySQL网站上的内容(

  • 问题内容: 在Python控制台中: 给我: 为什么?有人可以用二进制给我解释这个特殊情况吗? 问题答案: 是。 是: 并且是: 这是在两个补1 1翻转所有位,将1加到结果数上,并将结果解释为幅度的 二进制表示形式 ,并添加一个负号(因为数字以1开头): 它是2,但是由于MSB是1 ,所以符号是负数。 值得一提: 想一想,您会发现它本质上是数字-它有两个值和,它们只是整数1和0的“自定义”版本,它