- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我们有类似 Tooltip
类的东西需要实例化一个实例,更新该实例,并在安装、更新和销毁组件时同步销毁该实例(如中所示)下面的代码),似乎有两种模式可以做到这一点。
use:action
onMount
和 onDestroy
use:action
方法看起来更简洁,但除此之外,这两种方法之间是否存在任何潜在差异,使得在某些情况下优先选择另一种方法?
使用use:action
的例子:
<script>
import Tooltip from './tooltip'
export let text = ''
function initTooltip(node, text) {
const tooltip = Tooltip(node)
tooltip.text = text
return {
update(text) {
tooltip.text = text
},
destroy() {
tooltip.destroy()
}
}
}
</script>
<div use:initTooltip={text}>
<slot></slot>
</div>
使用onMount
和onDestroy
的例子:
<script>
import Tooltip from './tooltip'
import { onMount, onDestroy } from 'svelte'
export let text = ''
let node
let tooltip
onMount(() => {
tooltip = Tooltip(node)
tooltip.text = text
})
$: if (tooltip && tooltip.text !== text) {
tooltip.text = text
}
onDestroy(() => {
if (tooltip) {
tooltip.destroy()
}
})
</script>
<div bind:this={node}>
<slot></slot>
</div>
最佳答案
如果您可以想象它是需要在多个组件之间重用的行为,或者如果您可以想象它应用于 {#if ...}
block 内的元素(例如) , 那么它可能属于一个 Action 。
它是“属于”组件本身的东西,而不是特定元素,那么它可能更像是一个生命周期的东西。
在这种情况下,我的倾向可能是使用一个 Action 。
关于javascript - 什么时候使用 Svelte 的 use :action vs onMount and onDestroy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068865/
在我看来(我知道我会错)我在 svelte 中的 onMount 生命周期函数中所做的事情也可以在它之外完成。有区别吗?或者..我遗漏了很多要点。 import {onMount} from '
在我看来(我知道我会错)我在 svelte 中的 onMount 生命周期函数中所做的事情也可以在它之外完成。有区别吗?或者..我遗漏了很多要点。 import {onMount} from '
如果我添加 document.addEventListener 来单击 onMount,我发现了一个奇怪的行为。 我有 2 个组件:应用程序和嵌套 App中有一个按钮,设置isShow = true,
重新加载页面时,我想获取当前路线。可悲的是 route.name 是 undefined,router.currentRoute 是 RefImpl 对象,它有正确的路由 '/team' 里面。 ro
我正在尝试使用 React(和 Tailwind 但没关系)创建一个 onMount 动画。我目前的实现是这样的: const Component = () => { const [mount
你能帮我理解这两个组件之间的区别是什么: 回复:https://codesandbox.io/s/svelte-onmount-or-not-yhu91 使用 onMount: import {
我需要的是使用 async-await在 slim onMount() . 或者,也许您可以建议我出了什么问题以及我可以使用什么。 转载 去这里:https://svelte.dev/repl/0
我试图在我的代码中使用我在 onmount 中创建的常量作为 {myip},我不知道如何从 onmount 中提取它 import { page } from '$app/stores' i
我试图在我的代码中使用我在 onmount 中创建的常量作为 {myip},我不知道如何从 onmount 中提取它 import { page } from '$app/stores' i
我有一个组件和一个包含状态和一些操作的 Pinia 商店。该代码在浏览器和 E2E (cypress) 测试中运行良好,但在单元测试中失败。我正在使用 vue-testing-utils 和 vite
我正在尝试使用“active”类来设置我的网络项目当前事件选项卡的样式。为了定位我正在使用的选项卡元素 onMount(() => { const links = document.q
如果我们有类似 Tooltip 类的东西需要实例化一个实例,更新该实例,并在安装、更新和销毁组件时同步销毁该实例(如中所示)下面的代码),似乎有两种模式可以做到这一点。 使用use:action 使用
我已经使用以下命令安装了 stripe.js:npm install stripe现在我想将它导入到我的 sapper 组件中,这样我就可以使用它,但无法弄清楚如何做到这一点,尽管阅读了所有 mdn
我正在尝试 https://github.com/FormidableLabs/urql/tree/master/packages/svelte-urql 所做的惊人作品伙计们。 直到今天的问题,一切
我是一名优秀的程序员,十分优秀!