Skip to content

Commit d7535f5

Browse files
author
rizovs
committed
try useMemo
1 parent 0d6e2d6 commit d7535f5

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

src/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function App() {
1717
</Link>
1818
<span>
1919
Panels scroll into view if not fully visible when toggled.
20-
Using <pre>useImperativeMethods</pre> and <pre>useRef</pre>.
20+
Using <pre>useImperativeMethods</pre>, <pre>useRef</pre> and <pre>useMemo</pre>.
2121
</span>
2222
</div>
2323
<div className="item">

src/components/accordion/Accordion.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useRef, createRef, useImperativeMethods, useState, useEffect } from 'react';
1+
import React, { useRef, createRef, useMemo, useImperativeMethods, useState, useEffect } from 'react';
22
import scrollIntoView from 'scroll-into-view-if-needed';
33
import FoobarIpsum from 'foobar-ipsum';
44

@@ -33,7 +33,9 @@ function useAccordion(panelsCount) {
3333

3434
const AccordionPanel = React.forwardRef((props, ref) => {
3535
const containerRef = useRef();
36-
const textRef = useRef();
36+
37+
// We don't want to generate random text every time this component renders
38+
const randomText = useMemo(() => generateRandomText(), []);
3739

3840
useImperativeMethods(ref, () => ({
3941
scrollIntoView: () => {
@@ -44,7 +46,7 @@ const AccordionPanel = React.forwardRef((props, ref) => {
4446
return <div onClick={props.onClick} ref={containerRef}>
4547
<div className="accordion-label">{props.label}</div>
4648
{props.isOpen &&
47-
<div>{generateRandomText()}</div>}
49+
<div>{randomText}</div>}
4850
</div>;
4951
});
5052

src/components/accordion/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ function AccordionScreen() {
1111
{panels.map((panel, index) => (
1212
<AccordionPanel
1313
ref={refs && refs[index]}
14+
index={index}
1415
key={index}
1516
label={panel}
1617
isOpen={currentIndex === index}

0 commit comments

Comments
 (0)