fix(ui-mode): fix issue when updating state while rendering (#33634)

This commit is contained in:
Max Schmitt 2024-11-15 23:45:25 +01:00 committed by GitHub
parent c36b5a6059
commit 37ce53945e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 6 deletions

View File

@ -99,11 +99,17 @@ export const TestListView: React.FC<{
setSelectedTreeItemId(selectedTreeItem.id);
}, [runningState, setSelectedTreeItemId, testTree, collapseAllCount, setCollapseAllCount, requestedCollapseAllCount, expandAllCount, setExpandAllCount, requestedExpandAllCount, treeState, setTreeState]);
// Compute selected item.
const { selectedTreeItem } = React.useMemo(() => {
// Compute selected item
const selectedTreeItem = React.useMemo(() => {
if (!selectedTreeItemId)
return undefined;
return testTree.treeItemById(selectedTreeItemId);
}, [selectedTreeItemId, testTree]);
// Handle selection effects separately
React.useEffect(() => {
if (!testModel)
return { selectedTreeItem: undefined };
const selectedTreeItem = selectedTreeItemId ? testTree.treeItemById(selectedTreeItemId) : undefined;
return;
const testFile = itemLocation(selectedTreeItem, testModel);
let selectedTest: reporterTypes.TestCase | undefined;
if (selectedTreeItem?.kind === 'test')
@ -111,8 +117,7 @@ export const TestListView: React.FC<{
else if (selectedTreeItem?.kind === 'case' && selectedTreeItem.tests.length === 1)
selectedTest = selectedTreeItem.tests[0];
onItemSelected({ treeItem: selectedTreeItem, testCase: selectedTest, testFile });
return { selectedTreeItem };
}, [onItemSelected, selectedTreeItemId, testModel, testTree]);
}, [testModel, selectedTreeItem, onItemSelected]);
// Update watch all.
React.useEffect(() => {