diff --git a/packages/react-native/Libraries/Text/Text.js b/packages/react-native/Libraries/Text/Text.js index 902fcaba8bdf..e2eff288300b 100644 --- a/packages/react-native/Libraries/Text/Text.js +++ b/packages/react-native/Libraries/Text/Text.js @@ -134,7 +134,7 @@ const TextImpl: component( if (_accessibilityState == null) { _accessibilityState = {disabled}; } else { - _accessibilityState.disabled = _disabled; + _accessibilityState = {..._accessibilityState, disabled: _disabled}; } } diff --git a/packages/react-native/Libraries/Text/__tests__/Text-itest.js b/packages/react-native/Libraries/Text/__tests__/Text-itest.js index 2d19756ff935..da2e71ab37e0 100644 --- a/packages/react-native/Libraries/Text/__tests__/Text-itest.js +++ b/packages/react-native/Libraries/Text/__tests__/Text-itest.js @@ -11,7 +11,7 @@ import '@react-native/fantom/src/setUpDefaultReactNativeEnvironment'; import type {HostInstance} from 'react-native'; -import type {AccessibilityProps} from 'react-native'; +import type {AccessibilityProps, AccessibilityState} from 'react-native'; import ensureInstance from '../../../src/private/__tests__/utilities/ensureInstance'; import * as Fantom from '@react-native/fantom'; @@ -592,6 +592,30 @@ describe('', () => { }); }); + describe('accessibilityState', () => { + it('does not mutate the prop when disabled overrides it', () => { + const accessibilityState: AccessibilityState = {disabled: false}; + const root = Fantom.createRoot(); + + Fantom.runTask(() => { + root.render( + + {TEST_TEXT} + , + ); + }); + + expect(accessibilityState).toEqual({disabled: false}); + expect( + root.getRenderedOutput({props: ['accessibilityState']}).toJSX(), + ).toEqual( + + {TEST_TEXT} + , + ); + }); + }); + describe('aria-hidden', () => { it('is is passed as importantForAccessibility', () => { const root = Fantom.createRoot();