首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Vue.js 3更新()生命周期挂钩上更新砌体?

如何在Vue.js 3更新()生命周期挂钩上更新砌体?
EN

Stack Overflow用户
提问于 2022-02-03 02:43:07
回答 1查看 214关注 0票数 0

我有一个关于砖石布局更新的问题。如何在Vue.js (Version 3)生命周期钩子"updated()“中触发它?

我有一个卡片网格视图,如下面的代码(在这里使用引导5),但是当一个卡片改变它的大小时,很难更新砖石布局。我知道我可以使用layout() 见文件,但是我不知道如何在我的示例中调用它。

因此,我的主要问题是,当在()函数中初始化时,我不知道如何在更新的函数中使自己的砌体对象可访问。我该怎么做?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div
    class="row justify-content-left"
    data-masonry='{"percentPosition": true }'
  >
    <div class="col-md-6 col-lg-4 col-xxl-3 mb-4 card-col">
      <Card 1 />
    </div>
    <div class="col-md-6 col-lg-4 col-xxl-3 mb-4 card-col">
      <Card 2 />
    </div>
    <div class="col-md-6 col-lg-4 col-xxl-3 mb-4 card-col">
      <Card 3 />
    </div>
    <div class="col-md-6 col-lg-4 col-xxl-3 mb-4 card-col">
      <Card 4 />
    </div>
  </div>
</template>

<script>
[imports ...]

export default {
  name: "ComponentName",
  components: {
    [components ...],
  },
  mounted: function () {
    // initialize masonry
    this.$nextTick(function () {
      var row = document.querySelector("[data-masonry]");
      new Masonry(row, {
        // options
        percentPosition: true,
      });
    });
  },
  updated: function() {
    //-->how to call the relayout of Masonry here?
  }
};
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-03 12:18:12

要缓存结果Masonry实例的引用,只需将其赋值给属性(不需要在该实例上进行反应性,因此附加属性就可以了):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  mounted() {
    this._masonry = new Masonry(this.$refs.masonry,)
  },
  updated() {
    this._masonry.layout()
  }
}

但是,您会注意到,this._masonry.layout()调用实际上并没有重新布局砌体项(可能是由于库的某些限制)。我看到的唯一解决办法是重新创建Masonry实例,然后不再需要缓存对它的引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  mounted() {
    this.$nextTick(() => this.layout())
  },
  updated() {
    this.layout()
  },
  methods: {
    layout() {
      new Masonry(this.$refs.masonry,)
    }
  }
}

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70969854

复制
相关文章
js实现HTML页面时钟动态显示
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body οnlοad="startTime()"> <script> // var date = new Date(); // date.setFullYear(2010,1,11) // document.write(date) //时钟 function startTime() {
开心分享
2020/08/05
7.7K0
js实现HTML页面时钟动态显示
var mytime =setInterval(function () {getTime();},1000);function getTime() {var d =new Date();var t =d.toLocaleTimeString();document.getElementById("ptime").innerHTML =t;}
开心分享
2021/04/07
5.4K0
js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递。------jstarseven 、菜鸡的自我修养.
大道七哥
2019/09/10
7.2K0
HTML5-JS操作页面滚动条(禁止、隐藏、显示、不显示)
不显示滚动条(css) ::-webkit-scrollbar { width: 0px; } 禁止页面滚动条(js) document.body.parentNode.style.overflowY = "hidden"; $("body").parent().css("overflow-y","hidden"); 启用浏览器滚动条(js) document.body.parentNode.style.overflowY = "auto"; $("body").parent().css("overflo
手撕代码八百里
2020/07/28
11K0
js传递数组到后台
方法一:  1.使用JSON.stringify 将数组对象转化成json字符串;
超级小可爱
2023/02/20
3.9K0
如何在html页面显示html标签源码
这是一篇不正经实现方案报道。 1 引言 先来看个问答: stackoverflow: Why was the xmp HTML tag deprecated? [duplicate] 这个问题感觉
celineWong7
2020/11/05
11.5K0
html页面显示乱码原因 原
<div class="col-md-3">        <div id="treeview4" class=""></div> </div>
tianyawhl
2019/04/04
7.1K0
如何将高德地图JS API嵌入到HTML网页内
先去https://lbs.amap.com/注册一下,直接用淘宝/QQ等OpenID既可实现注册。 没有要求实名制,填写姓名的时候,填写英文名。
繁华是客
2023/03/03
5K0
js跳转页面并刷新(本页面跳转)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128190.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/27
23.1K0
thymeleaf 传递数据到js变量
thymeleaf 传递数据到js变量 如何把控制器传来的model中的值传递给js变量呢? 需要以下两个: <script th:inline="javascript"> var message =
Dream城堡
2018/09/10
5.2K0
html页面显示服务器时间
lblTimer = $("#lbltimer"); d = new Date('<%=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")%>'); lblTimer.children("span").text(getStr(d)) setInterval("setTimer()", 1000);
冰封一夏
2019/09/11
3.1K0
[开发技巧]·html实现返回页面并自动刷新
在进行APP开发或作制作网站时,有时候会遇到你下一级页面操作过以后会改变上一级页面的结果。这时候就需要我们去刷新上一级页面。 一般可以采取三种方式:
小宋是呢
2019/06/27
6.1K0
用js实现html页面水印
要在 HTML 页面中添加水印并防止截图,可以使用 JavaScript。以下是实现的基本步骤:
用户8703799
2023/04/10
4.4K0
html中嵌入iframe进行父子页面参数传递[通俗易懂]
1.父页面调用子页面函数,选择iframe的id + contentWindow +子页面的函数名([参数列表])
全栈程序员站长
2022/09/14
3.4K0
如何将 JavaScript 文件引入到 HTML
JavaScript,也缩写为 JS,是一种用于 Web 开发的编程语言。作为与 HTML 和 CSS 一起使用的 Web 核心技术之一,JavaScript 用于使网页具有交互性并构建 Web 应用程序。遵循通用显示标准的现代 Web 浏览器通过内置引擎支持 JavaScript,无需额外的插件。
梦溪
2021/09/08
12.3K1
点击加载更多

相似问题

如何在电报机器人中创建复选框列表?

220

如何在电报机器人中创建表单

23

如何在电报机器人中创建命令“Select a group”?

115

如何在Python电报机器人中使用ChosenInlineResultHandler

10

如何在电报机器人中显示选项?

210
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文