Convert React class components to functional components with hooks
Convert the React class component at $ARGUMENTS to a functional component using React hooks.
this.state = { ... } → individual useState hooksthis.setState({ key: value }) → setter functionthis.setState(prev => ...) → functional update formsetExpandedRows(prev => { const next = new Set(prev); next.add(key); return next; });
| Class | Functional |
|---|
componentDidMount | useEffect(fn, []) |
componentDidUpdate | useEffect(fn) or useEffect(fn, [deps]) |
componentWillUnmount | useEffect(() => cleanup, []) |
| mount + unmount | single useEffect with cleanup return |
React.createRef() → useRef(null)static contextType → useContext(MyContext)this.timer) → useRefcreateSelector (reselect) → useMemo with explicit dependency arraythis.props.x → destructured propsstatic defaultProps → default parameter values?) in the interface:
interface Props { sortSetting?: SortSetting; }
function Component({ sortSetting = defaultValue }: Props) { ... }
this.setState(update, callback) has no direct hook equivalent. Use ref + useEffect:
const pendingRef = useRef(false);
const prevRef = useRef(value);
const onUpdate = useCallback(() => {
pendingRef.current = true;
setValue(newValue);
}, []);
useEffect(() => {
if (pendingRef.current && prevRef.current !== value) {
pendingRef.current = false;
doCallback();
}
prevRef.current = value;
}, [value, doCallback]);
class MyTable extends SortedTable<Row> {} → const MyTable = SortedTable<Row>;<SortedTable<Row> {...props} />this. references removeduseCallback is actually called)package.json, run ESLint (fix) and Tests