function MyComponent () {
return (
<>
{/* all members are red, regardless of nesting */}
<Group color="red">
<Member />
<Subgroup>
<Member />
</SubGroup>
</Group>
{/* all members are green */}
<Group color="green">
<Member />
<Member />
</Group>
</>
)
}
props
import { useState } from "react"
function Layout ({ DynamicComponent, state, behaviour }) {
const [internal, setInternal] = useState()
return (
<StaticComponent onClick={behaviour}>
{state}
<DynamicComponent value={internal} />
</StaticComponent>
)
}
// render feature based on React tree
function MyComponent ({ operation }) {
return (
<Feature>
You're about to do {operation}.
{/* but render modal based on DOM tree, via portal */}
<Modal>Are you sure about {operation}?</Modal>
</Feature>
)
}
O(n^3)
, use React keys to reduce to O(n)
==
building trees!==
React tree==
Preact treecomponent
directive, instance variables in $ctrl
$digest
cycle ensures UI and state are synchronized{`component("inner", { require: { sharedState: "^^outer" } })`}
$scope
inheritance, if not using component
architecturengTransclude
export
variables as propssvelte/store
setContext
and getContext
<slot>