|
1 | 1 | import * as React from "react"; |
2 | | -import { useCallback, useEffect, useMemo, useState } from "react"; |
| 2 | +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; |
3 | 3 | import { Method } from "../../model-editor/method"; |
4 | 4 | import { ModeledMethod } from "../../model-editor/modeled-method"; |
5 | 5 | import { |
@@ -60,7 +60,15 @@ export const MultipleModeledMethodsPanel = ({ |
60 | 60 | }: MultipleModeledMethodsPanelProps) => { |
61 | 61 | const [selectedIndex, setSelectedIndex] = useState<number>(0); |
62 | 62 |
|
| 63 | + const selectNewMethod = useRef<number | null>(null); |
| 64 | + |
63 | 65 | useEffect(() => { |
| 66 | + if (selectNewMethod.current === modeledMethods.length - 1) { |
| 67 | + setSelectedIndex(selectNewMethod.current); |
| 68 | + selectNewMethod.current = null; |
| 69 | + return; |
| 70 | + } |
| 71 | + |
64 | 72 | if (selectedIndex >= modeledMethods.length) { |
65 | 73 | setSelectedIndex( |
66 | 74 | modeledMethods.length > 0 ? modeledMethods.length - 1 : 0, |
@@ -97,7 +105,7 @@ export const MultipleModeledMethodsPanel = ({ |
97 | 105 | const newModeledMethods = [...modeledMethods, newModeledMethod]; |
98 | 106 |
|
99 | 107 | onChange(method.signature, newModeledMethods); |
100 | | - setSelectedIndex(newModeledMethods.length - 1); |
| 108 | + selectNewMethod.current = newModeledMethods.length - 1; |
101 | 109 | }, [onChange, modeledMethods, method]); |
102 | 110 |
|
103 | 111 | const handleRemoveClick = useCallback(() => { |
|
0 commit comments