mirror of
https://github.com/jbranchaud/til
synced 2026-01-09 18:18:02 +00:00
Add Details Tags Are A Controllable Component as a react til
This commit is contained in:
@@ -9,7 +9,7 @@ and pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
||||||
|
|
||||||
_910 TILs and counting..._
|
_911 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -607,6 +607,7 @@ _910 TILs and counting..._
|
|||||||
- [Debug Jest Tests In create-react-app](react/debug-jest-tests-in-create-react-app.md)
|
- [Debug Jest Tests In create-react-app](react/debug-jest-tests-in-create-react-app.md)
|
||||||
- [Defining State In A Simple Class Component](react/defining-state-in-a-simple-class-component.md)
|
- [Defining State In A Simple Class Component](react/defining-state-in-a-simple-class-component.md)
|
||||||
- [Destructure Variables As Props To A Component](react/destructure-variables-as-props-to-a-component.md)
|
- [Destructure Variables As Props To A Component](react/destructure-variables-as-props-to-a-component.md)
|
||||||
|
- [Details Tags Are A Controllable Component](react/details-tags-are-a-controllable-component.md)
|
||||||
- [Dispatch Anywhere With Redux](react/dispatch-anywhere-with-redux.md)
|
- [Dispatch Anywhere With Redux](react/dispatch-anywhere-with-redux.md)
|
||||||
- [Dynamically Add Props To A Child Component](react/dynamically-add-props-to-a-child-component.md)
|
- [Dynamically Add Props To A Child Component](react/dynamically-add-props-to-a-child-component.md)
|
||||||
- [Dynamically Create HTML Elements](react/dynamically-create-html-elements.md)
|
- [Dynamically Create HTML Elements](react/dynamically-create-html-elements.md)
|
||||||
|
|||||||
31
react/details-tags-are-a-controllable-component.md
Normal file
31
react/details-tags-are-a-controllable-component.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Details Tags Are A Controllable Component
|
||||||
|
|
||||||
|
HTML has a lovely, but little-used tag for summarizing a set of collapsed
|
||||||
|
details. These details can be expanded and recollapsed by clicking the summary.
|
||||||
|
This is the `<details>` tag and it can be controlled with the `open` prop and
|
||||||
|
`onToggle` handler.
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
import React, { useState } from "react";
|
||||||
|
|
||||||
|
export default function Details({ summary, children, onToggle }) {
|
||||||
|
const [open, setOpen] = useState(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<details
|
||||||
|
open={open}
|
||||||
|
onToggle={() => {
|
||||||
|
setOpen(prev => !prev);
|
||||||
|
onToggle();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<summary>{summary}</summary>
|
||||||
|
{children}
|
||||||
|
</details>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
[live
|
||||||
|
example](https://codesandbox.io/s/loving-merkle-hxlut?file=/src/App.js:0-545),
|
||||||
|
[source](https://github.com/facebook/react/issues/15486)
|
||||||
Reference in New Issue
Block a user