### Direct Property Access on Computed Objects You can access properties directly on computed objects: ```tsx import { computed, UI, pattern } from 'commontools'; interface User { name: string; } interface Post { title: string; } interface Config { theme: string; } interface Input { users: User[]; posts: Post[]; config: Config; } export default pattern(({ users, posts, config }) => { const data = computed(() => ({ users, posts, config })); return { [UI]: ( <> {/* ✅ Direct property access works */}
{data.users.length} users
Theme: {data.config.theme}
{/* ✅ Can nest property access */} {data.users.map(user => (
{user.name}
))} ), }; }); ``` ### Reactivity Reactivity is completely automatic in JSX: ```tsx import { UI, pattern } from 'commontools'; interface Item { title: string; } interface Input { count: number; items: Item[]; user: { name: string; }; } export default pattern(({ count, items, user }) => ({ // ✅ All of these are reactive [UI]: (
{count} {count > 10 ? "High" : "Low"} {items.length} {user.name} {items.map(item =>
{item.title}
)}
), })); ```