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

vue.js - Vue中添加了非绑定的ref、key的元素会被认为是非静态的?

羊城
2023-06-10
// Vue 2.0 test/unit/modules/compiler/optimizer.spec.js
it('key', () => {
    const ast = parse('<p key="foo">hello world</p>', baseOptions)
    optimize(ast, baseOptions)
    expect(ast.static).toBe(false)
})

it('ref', () => {
    const ast = parse('<p ref="foo">hello world</p>', baseOptions)
    optimize(ast, baseOptions)
    expect(ast.static).toBe(false)
})

Vue中判断一个元素是否是静态的根据,是这个元素是否有可能发生改变。不会变化的元素就会被视为static,可以进行一些优化以提升性能。上例中的两个元素都被视为non static。

添加了ref的元素是non static可能还说得过去,因为可以通过ref获取到元素后,直接通过DOM修改。添加了key的元素要如何修改?

另外这个文件里还有个测试不太懂

it('render tag', () => {
    const ast = parse('<render :method="onRender"><p>hello</p></render>', baseOptions)
    optimize(ast, baseOptions)
    expect(ast.static).toBe(false)
})

从没有听说过有<render>这个标签,网上也搜不到

共有2个答案

慕容光启
2023-06-10

it('ref', () => {

const ast = parse('<p ref="foo">hello world</p>', baseOptions)
optimize(ast, baseOptions)
expect(ast.static).toBe(false)

})

全兴运
2023-06-10

在 Vue 里,ref 和 key 属性的默认不会变,但是可以通过一些交互来改变,所以是动态的。
你说的的 <render> 标签,这不是 HTML 或 Vue 的标准标签。这可能是在测试里用来模拟行为的自定义标签。<render> 标签有一个的 method 属性,这说明可能会在运行时改变,所以它是非静态的。

 类似资料:
  • 这是我上一篇文章的后续文章 参考非静态成员函数 在下面 const-、vole-和ref限定的成员函数 非静态成员函数可以在没有ref限定符的情况下声明,...在重载解析期间,X类的非静态cv限定成员函数被处理如下: 无ref限定符:隐式对象参数具有对cv限定X的类型左值引用,并且还允许绑定右值隐式对象参数 为了进一步探索这一点,我试用了上面链接中提供的源代码,如下所示: 我已经在每个基于引用限定

  • 有没有办法在非静态ArrayList中添加静态元素? 我有我的Collaborator类,这个类有一个Projects Arraylist。问题是,我的Project类有一个编辑项目的方法,但是当我进行编辑时,它不会更新我创建的协作者的Project ArrayList中的元素。 手动更新需要我在Collaborators Arraylist中运行Projects Arraylist,以搜索哪些合

  • 问题内容: 按照标准书,构造函数是用于初始化对象的一种特殊类型的函数。由于构造函数被定义为一个函数,并且内部类函数只能具有两种类型的静态或非静态类型。我怀疑是什么构造函数? 我的疑问是如果构造函数是静态方法,那么我们如何在构造函数内部频繁使用此方法 输出是否意味着构造函数是非静态的? 问题答案: 您的第二个例子很重要。引用在构造函数中可用,这意味着构造函数是针对某个对象(当前正在创建的对象)执行的

  • 问题内容: 我使用jquery fancybox 1.3.4作为弹出表单。 但是我发现fancybox无法绑定到动态添加的元素。例如,当我向当前文档中添加html元素时。 像这样:首先我使用jquery将一个元素附加到主体, 我叫fancybox, 但fancybox不适用于动态添加的元素。 我不能从此元素调用fancybox吗? 问题答案: 将fancybox(v1.3.x)绑定到动态添加的元素

  • 本文向大家介绍jQuery给动态添加的元素绑定事件的方法,包括了jQuery给动态添加的元素绑定事件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery给动态添加的元素绑定事件的方法。分享给大家供大家参考。具体分析如下: jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。在1.7版本以前使用l

  • 本文向大家介绍jquery html动态添加的元素绑定事件详解,包括了jquery html动态添加的元素绑定事件详解的使用技巧和注意事项,需要的朋友参考一下 在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况: 假设我们要给ul动态添加的<li>绑定click事件形成如下结果 以上这篇jquery html动态添加的元素绑定事件详解就是小编分享给大家的全部内容了,希望能给大家一个参考