Javascript中的Svelte Mount DOM元素

时间:2019-09-19 15:45:42

标签: svelte

我正尝试使用Svelte来安装pixi.js画布,如下所示。 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);
    })

1 个答案:

答案 0 :(得分:2)

来自bind:this

的文档
  

要获取对DOM节点的引用,请使用bind:this

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

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

如果要避免wrapper元素或自己实例化画布,则可以在onMount中创建Pixi应用并将其传递给canvas元素:

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

另请参阅使用画布的the official bind:this example