svelte - 如何调用 svelte:component 当前组件方法?
问题描述
我有这个基本应用程序,其中一些组件具有公共load
方法。在某些操作中,我想在当前的 svelte:component 上调用该方法,但我不知道如何获取对组件实例的引用。怎么可能做到这一点?
<script>
import router from 'page'
import Wines from './pages/Wines.svelte'
import Entry from './pages/Entry.svelte'
import TitleBar from './components/TitleBar.svelte'
let page,
params
router('/', () => page = Wines)
router('/wines', () => page = Wines)
router('/entry/:id?', (ctx, next) => {
params = ctx.params
next()
}, () => page = Entry)
async function forceSync(){
// how to call current component instance?
}
</script>
<main>
<TitleBar on:sync-request={forceSync}></TitleBar>
<svelte:component this={page} params={params}/>
</main>
解决方案
您可以使用bind:this
获取对当前组件的引用并将其分配给变量。这也适用于渲染的组件,<svelte:component>
因此您可以组织类似于以下内容的代码:
<script>
import Child from './Child.svelte'
let cmp
const func = () => {
// use cmp here: cmp.load()
}
</script>
<svelte:component this="{Child}" bind:this="{cmp}" />
推荐阅读
- c# - 如何从另一个线程在 PictureBox 上绘图?
- ios - 无法在 iOS 上从 Unity 运行 Vuforia 应用程序。代码签名无效
- xml - PLSQL解析GML
- android - 如何使用警报管理器将数据从片段传递到广播接收器
- javascript - 如何在不阻塞的情况下从浏览器重定向到移动应用程序?
- c++ - 铸造Qvector
到 QString - ios - 如何在 swift 4 中在没有库的情况下在 api 中发送授权类型承载令牌?
- jquery - 在 JQuery 中,我可以使用变量名来引用控件吗?我正在尝试更改标签的文本,但似乎找不到引用它的方法
- android - 工作经理适合在后台播放音乐吗?
- react-native - 无法使用 npm 和 yarn 为 react devtool 安装电子