Skip to content

Commit ef8c68a

Browse files
Renamed the label to cb-internal-label
1 parent 865a849 commit ef8c68a

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

posts/react-compound-components/2021-5-25-React-compound-compnents.md

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -137,30 +137,30 @@ export const AccordionItem: React.FC<{
137137

138138
// label is used to distinguish between each accordion element.
139139
// Adding the label prop to the children of accordionItem along with other props.
140-
const accordionItemChildren = childrenArray.map(child => {
140+
const accordionItemChildren = childrenArray.map((child) => {
141141
if (React.isValidElement(child)) {
142142
return React.cloneElement(child, {
143143
...child.props,
144-
label,
145-
})
144+
__cb__internal__accordion_label: label
145+
});
146146
}
147-
return null
148-
})
147+
return null;
148+
});
149149
return <div className={className}>{accordionItemChildren}</div>
150150
}
151151
```
152152

153153
```tsx
154154
// AccordionButton component
155155
export const AccordionButton: React.FC<{
156-
children: ReactNode
157-
label?: string
158-
className?: string
159-
}> = ({ label, children, className }) => {
160-
const { changeSelectedItem } = useAccordionContext()
156+
children: ReactNode;
157+
__cb__internal__accordion_label?: string;
158+
className?: string;
159+
}> = ({ __cb__internal__accordion_label: label, children, className }) => {
160+
const { changeSelectedItem } = useAccordionContext();
161161
const accordionButtonClickHandler = useCallback(() => {
162-
changeSelectedItem(label || "")
163-
}, [changeSelectedItem, label])
162+
changeSelectedItem(label || "");
163+
}, [changeSelectedItem, label]);
164164

165165
return (
166166
<div
@@ -169,26 +169,27 @@ export const AccordionButton: React.FC<{
169169
>
170170
{children}
171171
</div>
172-
)
173-
}
172+
);
173+
};
174174
```
175175

176176
```tsx
177177
// AccordionPanel component
178178
export const AccordionPanel: React.FC<{
179-
children: ReactNode
180-
label?: string
181-
className?: string
182-
}> = ({ children, label, className }) => {
183-
const { activeItem } = useAccordionContext()
179+
children: ReactNode;
180+
__cb__internal__accordion_label?: string;
181+
className?: string;
182+
}> = ({ children, __cb__internal__accordion_label: label, className }) => {
183+
const { activeItem } = useAccordionContext();
184+
184185
const panelStyles = [
185186
"accordion-panel",
186187
label === activeItem ? "show-item" : "hide-item",
187-
className,
188-
].join(" ")
188+
className
189+
].join(" ");
189190

190-
return <div className={panelStyles}>{children}</div>
191-
}
191+
return <div className={panelStyles}>{children}</div>;
192+
};
192193
```
193194

194195
We have done with creating all other components. Let's see what we have done.

0 commit comments

Comments
 (0)