- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
粘贴在我的问题中的语句是从 https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#Using_the_lifecycle_callbacks 复制的.
作为一个没有 Webcomponent 经验的开发人员,我试图理解迄今为止推荐的所有经验法则和最佳实践。
继续阅读它说“......使用 Node.isConnected 来确保”。它的意思很明显:检查它是否仍然连接,但不清楚,至少对我来说,我应该做什么来解决它,或者在某些情况下我应该期待什么。
我的情况是我正在创建一个 Web 组件来监听 SSE(服务器发送的事件)。这对于生活仪表板和其他几个场景很有用。从Kafka Stream消费后,SSE事件基本上会由NodeJs或Spring Webflux响应。
到目前为止,我所做的所有简单示例都没有遇到任何关于在连接回调期间不再连接的元素的问题。
此外,我没有阅读 Best Practices 中的任何推荐。视为“不再连接的元素”。
我读了一些优秀的讨论:
can-a-custom-elements-connectedcallback-be-called-more-than-once-before-disc
从那里我了解到我始终可以信任这个生命周期构造函数 --> connectedCallback --> disconnectedCallback。
和
How to have a 'connectedCallback' for when all child custom elements have been connected
基本上我了解到没有“在所有 child 升级后调用”的特定方法
这两个问题都接近我的问题,但它没有回答我:应该注意哪些挑战或风险,或者如何解决“一旦您的元素不再连接,可能会调用 connectedCallback”的可能性?在我上面描述的场景中,我缺少任何治疗方法吗?我是否应该创建一些观察者,当元素不再可用时触发以重新创建事件源对象并再次向此类事件源对象添加监听器?
我粘贴了下面的代码作为示例,完整的 Webcomponent 示例可以从 https://github.com/jimisdrpc/simplest-webcomponet 中克隆。及其后端来自 https://github.com/jimisdrpc/simplest-kafkaconsumer .
const template = document.createElement('template');
template.innerHTML = `<input id="inputKafka"/> `;
class InputKafka extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
this.attachShadow({mode: 'open'})
this.shadowRoot.appendChild(template.content.cloneNode(true))
const inputKafka = this.shadowRoot.getElementById('inputKafka');
var source = new EventSource('http://localhost:5000/kafka_sse');
source.addEventListener('sendMsgFromKafka', function(e) {
console.log('fromKafka');
inputKafka.value = e.data;
}, false);
}
attributeChangedCallback(name, oldVal, newVal) {
console.log('attributeChangedCallback');
}
disconnectedCallback() {
console.log('disconnectedCallback');
}
adoptedCallback() {
console.log('adoptedCallback');
}
}
window.customElements.define("input-kafka", InputKafka);
最佳答案
在自定义元素断开连接后调用 connectedCallback()
的唯一情况是当您使用它时:在创建后快速移动或删除它有时会导致这种情况。
在您描述的用例中,如果您使用持久的单页应用程序来托管您的 Web 组件,则永远不会发生这种情况。实际上,您的自定义元素永远不会断开连接,直到页面关闭。
关于javascript - 如何处理 "connectedCallback may be called once your element is no longer connected"编码一个 Webcomponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857611/
我在一个网站上工作,我的一侧有一段文字不完全适合,所以部分内容不可见,因为网站的底部在那里结束。我想让它可以滚动,这样我就可以通过向下滚动查看完整内容。 #header { z-index: 1; p
已经有很多关于使用 pivot longer 和 pivot wider 以我需要的方式 reshape 数据的问题,但没有一个能得到正确的答案。过去,我成功地结合使用了更长的旋转轴和更宽的旋转轴来获
我为客户开发了一个应用程序并交给了他。 他刚刚安装并正在使用它...... 现在我的许可证已经过期,现在他突然说他的应用程序说: {my_app}“不再可用” [ 注意:到目前为止他没有重新安装应用程
我有一个 flutter 项目,我必须在其中获取 IOS 版本。当我在 Android Studio 中尝试 Flutter->Build IOS 时,收到以下错误消息。 “CFURLRequestS
我使用的是 Wildfly 10.0.x。我正在将 ejb2.1 迁移到 ejb3.2这是我的 ejb-jar.xml 文件 www.cedar.com - Collaborative Plann
昨天,我正在使用 Instagram API 进行一些测试。我想设计一个网页,在其中显示我们帐户中的最新照片(有些像社交动态)。今天,我收到此错误:“用于身份验证的客户端不再处于事件状态。”。 有人知
所以我的代码中有一行是这样的 WebElement docDate = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpa
嗨,伙计,我必须知道页面何时不再是当前页面。我认为我必须使用 Listener,我看到它存在: @Override public void onPageSelected(int
我有一个带有下拉菜单的简单导航栏,当用户将鼠标悬停在导航栏中其受尊重的链接上时,该菜单应该保留,但在用户将鼠标悬停在实际下拉菜单而非其链接上后,我无法使其保留。我试过创建一个 :hover在实际下拉列
我正在尝试测试我的应用程序如何处理被 Android ActivityManager 销毁(以及稍后由 Alarm 事件重新启动)。换句话说,我想强制消息: I/ActivityManager( 3
我在 UITextView 上有一个观察者来检测它的内容大小是否在变化: [_textView addObserver:self forKeyPath:@"contentSize"options:NS
我在 Android O 及更高版本中尝试运行我的 JobIntentService 时遇到以下问题,我很难重现该问题: Caused by java.lang.SecurityException:
我编写了一个 iOS 应用程序,我在其中非常成功地使用了 CGLayer。在研究从该应用程序中获得更多性能的方法时,我看到了这篇博文:http://iosptl.com/posts/cglayer-n
我有这个配置 包中的位置 com.x.record.persistence.impl 我有一个组件需要来自 com.x.record.persistence.repo 的存储
我的函数,用来计算给定的频率、频率、功率。我想对它进行矢量化,这样它就可以计算频率、FWHM和AMP:。计时:。我在lorz1和lorz2中的向量化哪里出了问题?他们不是应该比洛兹3更快吗?
我的函数计算洛伦兹给定频率,fwhm,amp。我想对它进行矢量化,以便它计算频率,fwhm和amps的列表:。计时:。我在lorz1和lorz2中的向量化哪里出了问题?他们不是应该比洛兹3更快吗?
我想 pivot_long() 下面数据集的多列避免硬编码。我看过一些类似的问题,但我仍然做不到。 宽数据: > head(data) ID IND_TEST_SCORE ARG_G1_A
我已经为此工作了大约一天半,并在网上搜索了大量博客和帮助文章。我在 SO 上发现了几个与此错误相关的问题,但我认为它们并不完全适用于我的情况(或者在某些情况下,不幸的是,我无法很好地理解它们以实现 :
我到处搜索这个,找不到它。 Apple 会恢复从销售中删除的应用内购买吗? 可以在 iTunesConnect -> Cleared for sale -> No. 上删除 IAP。 上个月我添加了一
我们在Android Studio 3.4.1中显示以下警告消息: WARNING: The following project options are deprecated and have bee
我是一名优秀的程序员,十分优秀!