Build a segmented control (button group) with an animated indicator.
Skip to solutionKEEP THE
easyMachine Coding
Build a Segmented Control
937 views
01
Understand the problem
ReactUIState
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Nudge consolestandby
Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.
03
Study the solution
Solve in
Building a Segmented Control in React
Mental Model: The core idea is to render a group of buttons and a separate, absolutely positioned indicator. The indicator's position and width are dynamically updated based on the currently active button, using React state and useRef to measure button dimensions.
St
Solution ready — 2 min read
Classified // press E to declassify
04
React solution
Complete solutionRun Playground
import React, { useState } from 'react';
import SegmentedControl from './src/SegmentedControl';
export default function App() {
const segments = [
{ label: 'Daily', value: 'daily' },
{ label: 'Weekly', value: 'weekly' },
{ label: 'Monthly', value: 'monthly' },
];
const [selectedPeriod, setSelectedPeriod] = useState('weekly');
const handlePeriodChange = (value) => {
setSelectedPeriod(value);
};
return (
<div style={{ fontFamily: 'sans-serif', padding: '20px' }}>
<h1>Segmented Control Demo</h1>
<p>Select a time period:</p>
<SegmentedControl
segments={segments}
initialValue={selectedPeriod}
onChange={handlePeriodChange}
/>
<p style={{ marginTop: '20px', fontSize: '18px' }}>
Currently selected: <strong>{selectedPeriod}</strong>
</p>
</div>
);
}05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.
Transmission complete // awaiting log
KEEP THE
STREAK ALIVE.
Dossier 10 of 87 decoded in the Frontend Machine Coding track. One more won't hurt.