@@ -22,10 +22,19 @@ if (__DEV__) {
22
22
dangerouslySetInnerHTML : true ,
23
23
key : true ,
24
24
ref : true ,
25
+
26
+ defaultValue : true ,
27
+ valueLink : true ,
28
+ defaultChecked : true ,
29
+ checkedLink : true ,
30
+ innerHTML : true ,
31
+ suppressContentEditableWarning : true ,
32
+ onFocusIn : true ,
33
+ onFocusOut : true ,
25
34
} ;
26
35
var warnedProperties = { } ;
27
36
28
- var warnUnknownProperty = function ( name , source ) {
37
+ var warnUnknownProperty = function ( tagName , name , source ) {
29
38
if ( DOMProperty . properties . hasOwnProperty ( name ) || DOMProperty . isCustomAttribute ( name ) ) {
30
39
return ;
31
40
}
@@ -48,16 +57,6 @@ if (__DEV__) {
48
57
null
49
58
) ;
50
59
51
- // For now, only warn when we have a suggested correction. This prevents
52
- // logging too much when using transferPropsTo.
53
- warning (
54
- standardName == null ,
55
- 'Unknown DOM property %s. Did you mean %s? %s' ,
56
- name ,
57
- standardName ,
58
- formatSource ( source )
59
- ) ;
60
-
61
60
var registrationName = (
62
61
EventPluginRegistry . possibleRegistrationNames . hasOwnProperty (
63
62
lowerCasedName
@@ -66,13 +65,34 @@ if (__DEV__) {
66
65
null
67
66
) ;
68
67
69
- warning (
70
- registrationName == null ,
71
- 'Unknown event handler property %s. Did you mean `%s`? %s' ,
72
- name ,
73
- registrationName ,
74
- formatSource ( source )
75
- ) ;
68
+ if ( standardName != null ) {
69
+ warning (
70
+ standardName == null ,
71
+ 'Unknown DOM property %s. Did you mean %s? %s' ,
72
+ name ,
73
+ standardName ,
74
+ formatSource ( source )
75
+ ) ;
76
+ } else if ( registrationName != null ) {
77
+ warning (
78
+ registrationName == null ,
79
+ 'Unknown event handler property %s. Did you mean `%s`? %s' ,
80
+ name ,
81
+ registrationName ,
82
+ formatSource ( source )
83
+ ) ;
84
+ } else {
85
+ // We were unable to guess which prop the user intended.
86
+ // It is likely that the user was just blindly spreading/forwarding props
87
+ // Components should be careful to only render valid props/attributes.
88
+ warning (
89
+ tagName . indexOf ( '-' ) >= 0 ,
90
+ 'Unknown prop %s on <%s> tag. See https://fb.me/react-unknown-prop %s' ,
91
+ name ,
92
+ tagName ,
93
+ formatSource ( source )
94
+ ) ;
95
+ }
76
96
} ;
77
97
78
98
var formatSource = function ( source ) {
@@ -85,8 +105,11 @@ function handleElement(element) {
85
105
if ( element == null || typeof element . type !== 'string' ) {
86
106
return ;
87
107
}
108
+ if ( element . props . is ) {
109
+ return ;
110
+ }
88
111
for ( var key in element . props ) {
89
- warnUnknownProperty ( key , element . _source ) ;
112
+ warnUnknownProperty ( element . type , key , element . _source ) ;
90
113
}
91
114
}
92
115
0 commit comments