来自 Javascript 的 Svelte Mount DOM 元素

标签 svelte

我正在尝试使用 Svelte 安装 pixi.js Canvas ,如下所示。 app.view 是一个 HTML Canvas 元素,但我不确定如何用 Svelte 显示它。

<script>
    import * as PIXI from 'pixi.js'
    import { onMount } from 'svelte';
    let app = new PIXI.Application({ 
        width: 256,         // default: 800
        height: 256,        // default: 600
        antialias: true,    // default: false
        transparent: false, // default: false
        resolution: 1       // default: 1
    })
</script>

<style></style>

<app.view />

我暂时只使用这个,但如果能够将其添加到模板中那就太好了。

    onMount(() => {
        document.body.appendChild(app.view);
    })

最佳答案

来自 bind:this 的文档

To get a reference to a DOM node, use bind:this.

<div bind:this={container}/>
let container;
onMount(() => {
  container.appendChild(app.view);
});

这是一个实例:https://svelte.dev/repl/118b7d4540c64f8491d10a24e68948d7?version=3.12.1

如果您想避免使用包装器元素或自己实例化 Canvas ,您可以在 onMount 中创建 Pixi 应用程序并向其传递一个 Canvas 元素:

<canvas bind:this={view}/>
let view;
let app;
onMount(() => {
  app = new PIXI.Application({
    view,
    // ...other props
  });
});

另请参阅the official bind:this example使用 Canvas 。

关于来自 Javascript 的 Svelte Mount DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58014699/

相关文章:

svelte - 发布一个 slim 的 3 组件 : semantics for "main" and "svelte" fields of package. json?

javascript - 为什么 Animejs 在 svelte-kit 骨架项目的构建中抛出此错误?

javascript - 带有或不带有 onMount 的 SvelteJS 组件

socket.io - Svelte/Sveltekit 和 socket.io-client 无法在开发中工作(在预览中工作)

javascript - 我可以将 JS 代码从 Svelte 组件文件移动到其他文件 js 文件吗?

dom - 如何使用 Svelte 框架操作 DOM

slim :应用程序/ld+json

webpack - 使用 Svelte 仅捆绑主要组件

javascript - 在 svelte 中导入 javascript 文件

Svelte 热重载问题