diff --git a/packages/react-dom/src/__tests__/ReactDOMTextarea-test.js b/packages/react-dom/src/__tests__/ReactDOMTextarea-test.js
index fa5d717974aae..b2872d92b503f 100644
--- a/packages/react-dom/src/__tests__/ReactDOMTextarea-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMTextarea-test.js
@@ -399,12 +399,14 @@ describe('ReactDOMTextarea', () => {
});
it('should warn if value and defaultValue are specified', () => {
+ const InvalidComponent = () => (
+
+ );
expect(() =>
- ReactTestUtils.renderIntoDocument(
- ,
- ),
+ ReactTestUtils.renderIntoDocument(),
).toWarnDev(
- 'Textarea elements must be either controlled or uncontrolled ' +
+ 'InvalidComponent contains a textarea with both value and defaultValue props. ' +
+ 'Textarea elements must be either controlled or uncontrolled ' +
'(specify either the value prop, or the defaultValue prop, but not ' +
'both). Decide between using a controlled or uncontrolled textarea ' +
'and remove one of these props. More info: ' +
@@ -412,9 +414,7 @@ describe('ReactDOMTextarea', () => {
);
// No additional warnings are expected
- ReactTestUtils.renderIntoDocument(
- ,
- );
+ ReactTestUtils.renderIntoDocument();
});
it('should not warn about missing onChange in uncontrolled textareas', () => {
diff --git a/packages/react-dom/src/client/ReactDOMFiberTextarea.js b/packages/react-dom/src/client/ReactDOMFiberTextarea.js
index b891872653e66..ce6e0f7f0cb3b 100644
--- a/packages/react-dom/src/client/ReactDOMFiberTextarea.js
+++ b/packages/react-dom/src/client/ReactDOMFiberTextarea.js
@@ -11,6 +11,7 @@ import invariant from 'shared/invariant';
import warning from 'shared/warning';
import ReactControlledValuePropTypes from '../shared/ReactControlledValuePropTypes';
+import {getCurrentFiberOwnerNameInDevOrNull} from 'react-reconciler/src/ReactCurrentFiber';
let didWarnValDefaultVal = false;
@@ -70,11 +71,13 @@ export function initWrapperState(element: Element, props: Object) {
) {
warning(
false,
- 'Textarea elements must be either controlled or uncontrolled ' +
+ '%s contains a textarea with both value and defaultValue props. ' +
+ 'Textarea elements must be either controlled or uncontrolled ' +
'(specify either the value prop, or the defaultValue prop, but not ' +
'both). Decide between using a controlled or uncontrolled textarea ' +
'and remove one of these props. More info: ' +
'https://fb.me/react-controlled-components',
+ getCurrentFiberOwnerNameInDevOrNull() || 'A component',
);
didWarnValDefaultVal = true;
}