# Reflect.1. Binding a view — Mercury LMS > Contract: `@fiberfx/reflect` 4.1.1; Hypergraph and Hyperscript 4.1.1. ## Use Bind an ordinary Hyperscript component or `fromTag("input")` with `reflect({view, bind})`. `createReflect(view)(bind, options?)` fixes the view. Define models/factories outside render. ## Contract Stores become values. Events/effects and raw bound functions become scoped callbacks. Incoming props win, including a supplied handler; no handler chaining or class merging. Input onInput receives Event, Checkbox onChange receives boolean. Adapt arguments explicitly. Never bind event as a native input handler. ## Exercise Use [binding lab](/examples/reflect-lab/index.html?part=binding&lang=en). Change the draft name, apply it, then submit an empty name: the model sample filter retains the applied value. Change the count independently; reason about count:99 as a separate display override. Reset and repeat. Type-negative example must be checked by TypeScript, not presented as runtime payload validation. ## Source `fiberfx/reflect/src/reflect.ts`, `src/from-tag.ts`, `README.md`; release 20dad1543358ab293c61b004a1f5f2577915798b, npm 4.1.1. ## Navigation - [HTML](/reflect/binding) - [Reflect](/reflect/llms.txt) - [Index](/llms.txt) - [Sitemap](/sitemap.xml) - [All English companions](/llms-full.txt)