Spread Properties on Child Components
Pass a set of properties in an object to a child component using the lwc:spread
directive. lwc:spread
also enables elements to accept an object that's bound as properties at runtime.
The lwc-recipes repo has an apiSpread
component that demonstrates the lwc:spread
directive.
The lwc:spread
directive accepts one object.
Use an object with key-value pairs, where the keys are property names.
In your child component, use the properties in your template.
Use the @api
decorator to expose your properties to the parent component.
lwc:spread
is always applied last, so it overrides any properties that are directly declared in the template. Only one lwc:spread
instance can be used on a directive.
In this example, c-child
passes name
as Lightning Web Components
even though the parent component is passing in name="lwc"
. Ultimately, the child component takes the "Lightning Web Components"
name.
lwc:spread
doesn't bind the component to the event handlers defined in the template. For example, you can pass in an onclick
handler in the object as the property name.
Here, c-child
passes name
as LWC
. When the c-child element is clicked, spreadClick()
replaces name
with Lightning Web Components
.
Although we don't include onclick
in spreadClick()
, the element contains onclick
as previously assigned to it via the simpleProps
object.
Most of the HTML attributes are reflected as properties. For example, class
attribute is reflected as className
property.
Let's say you pass properties to a child component.
As a result, the spanProps
property causes the element to be rendered as <c-child class="spanclass" id="mySpan"></c-child>
.
See Also