Javascript 超薄组件加载

Javascript 超薄组件加载,javascript,svelte,Javascript,Svelte,有没有办法知道Svelte组件何时完成了其所有外部资源的加载,而不是onMount 它类似于窗口的onload事件 编辑:为了澄清问题,我希望组件在完全加载其所有图像后执行某些操作 EDIT2:我决定使用javascript加载图像。在我看来,这不是最干净的做事方式,但它确实有效。 谢谢大家! EDIT2:我决定使用javascript加载图像。在我看来,这不是最干净的做事方式,但它确实有效。谢谢大家! 这就是路。Svelte并没有尝试包装一切JS,而是只包装它能够增加真正价值的东西。在这里,J

有没有办法知道Svelte组件何时完成了其所有外部资源的加载,而不是
onMount

它类似于
窗口的
onload
事件

编辑:为了澄清问题,我希望组件在完全加载其所有图像后执行某些操作

EDIT2:我决定使用javascript加载图像。在我看来,这不是最干净的做事方式,但它确实有效。 谢谢大家!

EDIT2:我决定使用javascript加载图像。在我看来,这不是最干净的做事方式,但它确实有效。谢谢大家!

这就是路。Svelte并没有尝试包装一切JS,而是只包装它能够增加真正价值的东西。在这里,JS完全可以满足这一需求

您可以使用轻薄型,使其更易于重复使用:


让等待=0
const notifyLoaded=()=>{
console.log('loaded!')
}
const onload=el=>{
等待++
el.addEventListener('load',()=>{
等待--
如果(等待===0){
notifyLoaded()
}
})
}
如果需要跨多个组件重用此模式,可能需要将此模式包装到工厂():

util.js

export const createLoadObserver=handler=>{
让等待=0
const onload=el=>{
等待++
el.addEventListener('load',()=>{
等待--
如果(等待===0){
handler()
}
})
}
空载返回
}
App.svelte


从“/util.js”导入{createLoadObserver}
const onload=createLoadObserver(()=>{
console.log('loaded!!!'))
})
EDIT2:我决定使用javascript加载图像。在我看来,这不是最干净的做事方式,但它确实有效。谢谢大家!

这就是路。Svelte并没有尝试包装一切JS,而是只包装它能够增加真正价值的东西。在这里,JS完全可以满足这一需求

您可以使用轻薄型,使其更易于重复使用:


让等待=0
const notifyLoaded=()=>{
console.log('loaded!')
}
const onload=el=>{
等待++
el.addEventListener('load',()=>{
等待--
如果(等待===0){
notifyLoaded()
}
})
}
如果需要跨多个组件重用此模式,可能需要将此模式包装到工厂():

util.js

export const createLoadObserver=handler=>{
让等待=0
const onload=el=>{
等待++
el.addEventListener('load',()=>{
等待--
如果(等待===0){
handler()
}
})
}
空载返回
}
App.svelte


从“/util.js”导入{createLoadObserver}
const onload=createLoadObserver(()=>{
console.log('loaded!!!'))
})

更多信息谢谢@dagalti!但我的问题是:当我走到另一条路线并返回时,这个
on:load
功能与
onMount
不同,不会被触发。有什么办法可以解决这个问题吗?你所说的“外部资源”是什么意思?对于我的案例:图像。
更多信息谢谢@dagalti!但我的问题是:当我走到另一条路线并返回时,这个
on:load
功能与
onMount
不同,不会被触发。有什么办法可以解决这个问题吗?你所说的“外部资源”是什么意思?对于我的案例:图像。这正是我所需要的!非常感谢。这正是我需要的!非常感谢。