Basics
Context
Svelte’s Context is a way to pass data through the component tree without having to pass props down manually at every level.
Recommended App Structure
The recommended app structure is to implement the component <Canvas>
that provides all basic contexts and use a single child component (typically named “Scene.svelte” in
examples) for your Threlte app. This way, you don’t need to worry about the presence of contexts
in your components.
App.svelte
<script>
import { Canvas } from '@threlte/core'
import Scene from './Scene.svelte'
</script>
<Canvas>
<Scene />
</Canvas>
Scene.svelte
<script>
import { T, useFrame } from '@threlte/core'
import { interactivity } from '@threlte/extras'
import Player from './Player.svelte'
import World from './World.svelte'
let rotation = 0
// useFrame is relying on a context provided
// by <Canvas>. Because we are definitely inside
// <Canvas>, we can safely use it.
useFrame((_, delta) => {
rotation += delta
})
// This file is also typically the place to
// inject plugins
interactivity()
</script>
<T.Mesh rotation.y={rotation}>
<T.BoxGeometry />
<T.MeshBasicMaterial color="red" />
</T.Mesh>
<Player />
<World />