我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 样式更新的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

这篇文章主要介绍了Fabric.js 样式不更新解决方法案例
2023-02-14

Vue数据更新视图不更新的几种解决方案小结

这篇文章主要介绍了Vue数据更新视图不更新的几种解决方案小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Android SDK Manager国内无法更新的解决方案

现在由于GWF,google基本和咱们说咱见了,就给现在在做Android 或者想学习Android 的朋友带来了诸多的不便,最简单的就是Android SDK Manager 你无法更新了。 现在这里有一
2022-06-06

Win10 9879版无法安装KB3020114更新解决方案

12月2日微软向9879版本的Windows 10技术预览版用户释放了一个更新(KB3020114),旨在修复Explorer.exe的经常性崩溃。不过据测试者报道,约有12%的该版本用户无法安装或应用该更新。微软称已经知悉该问题,并提供了
2023-06-09

CSS样式不起作用的解决方法

这篇文章主要介绍CSS样式不起作用的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!浏览器缓存问题如果你反复检查认为代码没有问题,那么可能是浏览器缓存的问题。在排查前先试一下清除浏览器缓存,重启浏览器或者换个浏
2023-06-08

Win10正式版10586.318更新失败解决方法

微软本周推送的Win10正式http://www.cppcns.com版10586.318更新KB3156421会导致部分用户系统php出现问题,具体表现为电脑运行变慢,或者干脆无法成功安装。对于电脑编程变慢问题,微软建议用户暂时关闭Cor
2023-05-20

Android ADT和SDK Manager无法更新下载解决方案

相信很多人都有在给Eclipse添加ADT插件的时候,在线安装半天出不来或者是ADT安装 好了,但是SDK Manager无法更新。其中安装ADT时的情况如下图:为什么半天出不来或者无法更新,GFW的功劳 ,你懂得。 只要在host文件末尾
2022-06-06

三种用法示例:更新SQL语句的不同方式

SQL的update语句三种用法,需要具体代码示例在SQL中,update语句用于更新表中的数据。它是一种非常有用的语句,可以帮助我们更新表中的特定数据或者批量更新多条数据。下面将介绍update语句的三种常见用法,并提供具体的代码示例。
三种用法示例:更新SQL语句的不同方式
2024-02-22

vue查询数据el-table不更新数据的解决方案

这篇文章主要介绍了vue查询数据el-table不更新数据的问题及解决方案,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-15

Win7不能自动更新的原因和解决方法

Win7不能自动更新的原因和解决方法? 原因:对于Windows7中的自动更新,如果不出现时,主要是要检查你的对更新的设置的改变选项。可以从两方面着手解决。 解决方法一: 点击关机时使用的windows图标,接着点击“所有程序&
2023-05-26

win10更新后网络使用不了的解决方法

这篇文章主要介绍了win10更新后网络使用不了的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体方法如下:1、首先我们使用快捷键“win+I”打开【设置】界面,在设
2023-06-10

win10系统计算机无法更新的解决方案教程

我想知道你在更新计算机系统时是否遇到过无法更新的情况?如果你不知道解决方案,你就不能错过以下内容。方法1:1。我们强制关机,重新启动计算机,看看是否可以进入系统。2.如有可能,我们将进入更新和安全,并将自动更新取消。方法二:1。如果我们无法
2023-07-10

Mybatis-Plus中updateById方法不能更新空值问题解决

本文主要介绍了Mybatis-Plus中updateById方法不能更新空值问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

MAC 更新 “.bash_profile” 系统全局配置文件不生效的解决方案

查了很多文章,看到很多都是说由于终端是ZSH模式导致的 只是切换终端的话并没有让我的设置生效 但是切换终端的模式的命令还是贴出来 chsh -s /bin/bash chsh -s /bin/zsh 最终成功解决是看了这篇文章链接: htt
2023-08-19

elementui的el-popover修改样式不生效的解决方法

本篇内容介绍了“elementui的el-popover修改样式不生效的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在使用elem
2023-06-20

不想升级Win10一周年更新版RedStone的解决方法

这篇文章主要介绍不想升级Win10一周年更新版RedStone的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  8月2日,是微软承诺的Win10一周年更新版(RedStone)正式发布的日子,虽说和半年前的
2023-06-14

编程热搜

目录