@@ -1561,95 +1561,6 @@ describe('setValue', () => {
15611561 expect ( valueNotifications ) . toHaveLength ( 0 ) ;
15621562 } ) ;
15631563
1564- it ( 'should re-render useFieldArray fields when setValue targets a nested array path - issue #13260' , ( ) => {
1565- type FormValues = {
1566- items : { value : number } [ ] ;
1567- } ;
1568-
1569- const App = ( ) => {
1570- const { control, setValue } = useForm < FormValues > ( {
1571- defaultValues : {
1572- items : [ { value : 0 } , { value : 0 } , { value : 0 } ] ,
1573- } ,
1574- } ) ;
1575- const { fields } = useFieldArray ( { control, name : 'items' } ) ;
1576-
1577- return (
1578- < div >
1579- { fields . map ( ( field , index ) => (
1580- < span key = { field . id } data-testid = { `item-${ index } ` } >
1581- { field . value }
1582- </ span >
1583- ) ) }
1584- < button
1585- type = "button"
1586- onClick = { ( ) => setValue ( 'items.1.value' , 42 , { shouldDirty : true } ) }
1587- >
1588- update
1589- </ button >
1590- </ div >
1591- ) ;
1592- } ;
1593-
1594- render ( < App /> ) ;
1595-
1596- expect ( screen . getByTestId ( 'item-1' ) . textContent ) . toBe ( '0' ) ;
1597-
1598- act ( ( ) => {
1599- fireEvent . click ( screen . getByRole ( 'button' , { name : / u p d a t e / i } ) ) ;
1600- } ) ;
1601-
1602- expect ( screen . getByTestId ( 'item-1' ) . textContent ) . toBe ( '42' ) ;
1603- } ) ;
1604-
1605- it ( 'should re-render all matching field arrays when setValue targets nested field-array path' , ( ) => {
1606- type FormValues = {
1607- items : { subitems : { value : number } [ ] } [ ] ;
1608- } ;
1609-
1610- const App = ( ) => {
1611- const { control, setValue } = useForm < FormValues > ( {
1612- defaultValues : {
1613- items : [ { subitems : [ { value : 0 } , { value : 0 } ] } ] ,
1614- } ,
1615- } ) ;
1616- const { fields : itemFields } = useFieldArray ( { control, name : 'items' } ) ;
1617- const { fields : subItemFields } = useFieldArray ( {
1618- control,
1619- name : 'items.0.subitems' ,
1620- } ) ;
1621-
1622- return (
1623- < div >
1624- < span data-testid = "item-nested-value" >
1625- { itemFields [ 0 ] ?. subitems ?. [ 1 ] ?. value }
1626- </ span >
1627- < span data-testid = "subitem-value" > { subItemFields [ 1 ] ?. value } </ span >
1628- < button
1629- type = "button"
1630- onClick = { ( ) =>
1631- setValue ( 'items.0.subitems.1.value' , 7 , { shouldDirty : true } )
1632- }
1633- >
1634- update nested
1635- </ button >
1636- </ div >
1637- ) ;
1638- } ;
1639-
1640- render ( < App /> ) ;
1641-
1642- expect ( screen . getByTestId ( 'item-nested-value' ) . textContent ) . toBe ( '0' ) ;
1643- expect ( screen . getByTestId ( 'subitem-value' ) . textContent ) . toBe ( '0' ) ;
1644-
1645- act ( ( ) => {
1646- fireEvent . click ( screen . getByRole ( 'button' , { name : / u p d a t e n e s t e d / i } ) ) ;
1647- } ) ;
1648-
1649- expect ( screen . getByTestId ( 'item-nested-value' ) . textContent ) . toBe ( '7' ) ;
1650- expect ( screen . getByTestId ( 'subitem-value' ) . textContent ) . toBe ( '7' ) ;
1651- } ) ;
1652-
16531564 it ( 'should mark field as dirty when updating array of objects with shouldDirty true' , ( ) => {
16541565 type IData = {
16551566 data : { id : number ; name : string } [ ] ;
0 commit comments