返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Fabric.js 样式不更新解决方法案例
  • 912
分享到

Fabric.js 样式不更新解决方法案例

Fabric.js 样式更新Fabric.js 样式 2023-02-14 09:02:31 912人浏览 八月长安
摘要

目录本文简介是否需要重新绘制代码仓库本文简介 不知道你有没有遇到过在使用 Fabric.js 时无意中一些骚操作修改了元素的样式,但刷新画布却没更新元素样式? 如果你也遇到同样的问

本文简介

不知道你有没有遇到过在使用 Fabric.js 时无意中一些骚操作修改了元素的样式,但刷新画布却没更新元素样式?

如果你也遇到同样的问题的话,可以尝试使用本文的方法。

是否需要重新绘制

我先举个例子。

<canvas id="c" style="border: 1px solid #ccc;"></canvas>
<script>
let canvas = new fabric.Canvas('c')
// 矩形 - 亮粉色
let rect = new fabric.Rect({
  left: 50,
  top: 30,
  width: 80,
  height: 60,
  fill: 'hotpink'
})
canvas.add(rect)
setTimeout(() => {
  console.log(rect.fill) // 输出 'hotpink'
  rect.fill = 'red'
  console.log(rect.fill) // 输出 'red'
  canvas.renderAll() // 刷新画布
}, 1000)
</script>

在这个例子中,页面运行1秒后,我想通过 rect.fill = 'red' 的方式将画布中的矩形修改成红色。

修改完成后在控制台输出当前矩形的颜色,然后再通过 canvas.renderAll() 的方式刷新画布。

从控制台输出的数据来看,矩形确实是变红了,但从视觉上看画布中的矩形却还是粉色。

其实正确的做法是使用 rect.set('fill', 'red') 去修改矩形颜色,set() 方法会通知画布要刷新样式。

但如果你坚持使用 rect.fill = 'red' 的方式去修改也不是不行,此时需要将矩形的 statefullCache 设置为 true,矩形就会自动检测属性的值的更新。

// 省略部分代码
let rect = new fabric.Rect({
  left: 50,
  
  
  top: 30,
  width: 80,
  height: 60,
  fill: 'hotpink',
  statefullCache: true // 自动检测更新
})
canvas.add(rect)
setTimeout(() => {
  console.log(rect.fill) // 输出 'hotpink'
  rect.fill = 'red'
  console.log(rect.fill) // 输出 'red'
  canvas.renderAll()
}, 1000)

但并不是所有情况都适合将 statefullCache 设为 true

官方文档也有介绍到:

statefullCache: Boolean

When true, object properties are checked for cache invalidation. In some particular situation you may want this to be disabled ( spray brush, very big, groups) or if your application does not allow you to modify properties for groups child you want to disable it for groups. default to false since 1.7.0

说了这么多,最后我还是推荐通过 set() 方法修改元素的属性。

代码仓库

⭐ 是否需要重新绘制缓存的副本

以上就是Fabric.js 样式不更新解决方法案例的详细内容,更多关于Fabric.js 样式更新的资料请关注编程网其它相关文章!

--结束END--

本文标题: Fabric.js 样式不更新解决方法案例

本文链接: https://lsjlt.com/news/195920.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Fabric.js 样式不更新解决方法案例
    目录本文简介是否需要重新绘制代码仓库本文简介 不知道你有没有遇到过在使用 Fabric.js 时无意中一些骚操作修改了元素的样式,但刷新画布却没更新元素样式? 如果你也遇到同样的问...
    99+
    2023-02-14
    Fabric.js 样式更新 Fabric.js 样式
  • Vue数据更新视图不更新的几种解决方案小结
    目录Vue数据更新视图不更新的几种解决知识拓展对象属性的添加或删除异步更新队列Object.assign方法vue多层循环Vue更改了数据但是视图却没有更新Vue数据更新视图不更新的...
    99+
    2022-11-13
    Vue数据更新 Vue视图不更新 Vue数据
  • Android SDK Manager国内无法更新的解决方案
             现在由于GWF,google基本和咱们说咱见了,就给现在在做Android  ...
    99+
    2022-06-06
    manager 更新 sdk 解决方案 Android
  • Win10 9879版无法安装KB3020114更新解决方案
    12月2日微软向9879版本的Windows 10技术预览版用户释放了一个更新(KB3020114),旨在修复Explorer.exe的经常性崩溃。不过据测试者报道,约有12%的该版本用户无法安装或应用该更新。微软称已经...
    99+
    2023-06-09
    Win10 9879 KB3020114 方案 解决
  • vue的状态更新方式(异步更新解决)
    目录状态更新(异步更新解决)解决方案异步更新及nexttick为什么需要异步更新nextTick 原理状态更新(异步更新解决) 在vue中状态更新是异步的,这一点和react中的se...
    99+
    2024-04-02
  • CSS样式不起作用的解决方法
    这篇文章主要介绍CSS样式不起作用的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!浏览器缓存问题如果你反复检查认为代码没有问题,那么可能是浏览器缓存的问题。在排查前先试一下清除浏览器缓存,重启浏览器或者换个浏...
    99+
    2023-06-08
  • Win10正式版10586.318更新失败解决方法
    微软本周推送的Win10正式版10586.318更新KB3156421会导致部分用户系统出现问题,具体表现为电脑运行变慢,或者干脆无法成功安装。对于电脑变慢问题,微软建议用户暂时关闭Cortana来缓解症状;对于无法安装...
    99+
    2023-05-20
    Win10 10586.318
  • 解决vue中数据更新视图不更新问题this.$set()方法
    目录vue数据更新视图不更新解决问题vue数据不更新的原因(数据更改了,但是视图没有更新)解决办法具体流程如下数组更新检测注意事项对象更改检测注意事项vue数据更新视图不更新 1.d...
    99+
    2024-04-02
  • 三种用法示例:更新SQL语句的不同方式
    SQL的update语句三种用法,需要具体代码示例 在SQL中,update语句用于更新表中的数据。它是一种非常有用的语句,可以帮助我们更新表中的特定数据或者批量更新多条数据。下面将介...
    99+
    2024-02-22
    sql 语句 update sql语句
  • Android ADT和SDK Manager无法更新下载解决方案
    相信很多人都有在给Eclipse添加ADT插件的时候,在线安装半天出不来或者是ADT安装 好了,但是SDK Manager无法更新。其中安装ADT时的情况如下图: 为什么...
    99+
    2022-06-06
    更新 manager adt sdk 解决方案 Android
  • vue样式叠层z-index不起作用的解决方案
    目录z-index不起作用z-index失效的原因vue element 弹框样式叠层问题 z-index不起作用 问题:当点击出现element弹框时,与当前的页面出现叠层问题(使...
    99+
    2024-04-02
  • 外部css样式不生效的解决方法
    这篇文章给大家分享的是有关外部css样式不生效的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 解决方法:1、将css引入的link的属性补充...
    99+
    2024-04-02
  • vue查询数据el-table不更新数据的解决方案
    目录vue查询到数据el-table不更新数据解决方案vue查询到数据el-table不更新数据 如:查询名称为abc的数据,.js及.vue后台打印都可以查询到此条数据,el-ta...
    99+
    2022-12-15
    vue查询数据el-table不更新数据 vue el-table数据不更新
  • win10完成更新后变卡解决方案
    win10系统能够更新之后很多用户都是在第一时间选择更新的,但是在更新完成之后却发现有变化的,下面给大家带来win10更新后变卡的方法,如果你也有这类问题的话,马上过来看看。win10完成更新后变卡解决方案。打开这台电脑右键单击系统磁盘选择...
    99+
    2023-07-20
  • windows7更新失败正在还原更改解决方案
    windows7用户在升级系统时遇到了配置失败还原更改的现象,造成无法正常进到系统,这个问题要怎么解决呢?你先强制重启电脑进入修补页面,以后选择安全模式进到,以后系统又会有还原更改的提示,但是这次不要关机,等候一段时间之后它就能进到系统了。...
    99+
    2023-07-12
  • CentOS中更新系统而不更新Linux内核的方法是怎样的
    今天就跟大家聊聊有关CentOS中更新系统而不更新Linux内核的方法是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天在使用Ucloud的云服务器的时候,手贱使用了一下 代...
    99+
    2023-06-10
  • win10更新后网络使用不了的解决方法
    这篇文章主要介绍了win10更新后网络使用不了的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体方法如下:首先我们使用快捷键“win+I”打开【设置】界面,在设置界...
    99+
    2023-06-10
  • Win7不能自动更新的原因和解决方法
    Win7不能自动更新的原因和解决方法? 原因:对于Windows7中的自动更新,如果不出现时,主要是要检查你的对更新的设置的改变选项。可以从两方面着手解决。 解决方法一: 点击关机时使用的windows图标,接着点击&l...
    99+
    2023-05-26
    Win7 解决 原因 方法
  • mybatisPlus更新字段值为null的解决方案
    目录问题描述TableField源码FieldStrategy 源码设置为null的方案使用UpdateWrapper更新设置全局的field-strategy(不推荐)设置某个字段...
    99+
    2023-05-15
    mybatisplus 更新字段为null mybatisplus更新null mybatis更新字段为null报错
  • Windows更新失败的解决方法
    这篇文章主要介绍Windows更新失败的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Windows更新失败的解决方法一:重启电脑,按F8进入高级开机选项,选择回车“最近一次的正确配置(高级)”,如图所示:W...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作