onOrientation(fn) calls fn whenever the screen orientation flips
between 'horizontal' and 'vertical' — handy for swapping layouts
or re-laying-out a canvas. Multiple subscribers share the underlying
documentSize listener. For a reactive accessor use
useOrientation.
| Argument | Type | Description |
|---|---|---|
fn |
(o: 'horizontal' | 'vertical') => void |
Called on each orientation change. |
The callback fires once with the current orientation on subscribe, then again on every flip. It runs inside the calling reactive scope, so the subscription is torn down automatically when that scope disposes.
Subscribes to orientation flips and logs the new value. Resize the window (or rotate the device) to see it fire.
import { render, signal } from 'pota'
import { onOrientation } from 'pota/use/orientation'
function App() {
const log = signal('resize to see orientation changes')
onOrientation(o => {
log.write(`orientation is now ${o}`)
})
return <p>{log.read}</p>
}
render(App)
Reaches for the callback form when the reaction is an imperative side effect — here, redrawing a canvas — rather than reactive markup.
import { render } from 'pota'
import { onOrientation } from 'pota/use/orientation'
function App() {
let canvas
onOrientation(o => {
if (!canvas) return
const ctx = canvas.getContext('2d')
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.fillStyle = o === 'horizontal' ? 'teal' : 'tomato'
ctx.fillRect(0, 0, canvas.width, canvas.height)
})
return (
<canvas
use:ref={el => (canvas = el)}
width="200"
height="120"
/>
)
}
render(App)