@@ -18,6 +18,15 @@ def process_exception(e, component, reraise = nil)
1818 raise e if reraise
1919 end
2020
21+ def deprecation_warning ( message )
22+ @deprecation_messages ||= [ ]
23+ message = "Warning: Deprecated feature used in #{ self . name } . #{ message } "
24+ unless @deprecation_messages . include? message
25+ @deprecation_messages << message
26+ IsomorphicHelpers . log message , :warning
27+ end
28+ end
29+
2130 def validator
2231 @validator ||= React ::Validator . new ( self )
2332 end
@@ -105,12 +114,14 @@ def param(*args)
105114 end
106115
107116 def required_param ( name , options = { } )
117+ deprecation_warning "`required_param` is deprecated, use `param` instead."
108118 validator . requires ( name , options )
109119 end
110120
111121 alias_method :require_param , :required_param
112122
113123 def optional_param ( name , options = { } )
124+ deprecation_warning "`optional_param` is deprecated, use `param param_name: default_value` instead."
114125 validator . optional ( name , options )
115126 end
116127
@@ -144,13 +155,16 @@ def export_state(*states, &block)
144155
145156 def define_state_methods ( this , name , from = nil , &block )
146157 this . define_method ( "#{ name } " ) do
158+ self . class . deprecation_warning "Direct access to state `#{ name } `. Use `state.#{ name } ` instead." if from . nil? || from == this
147159 React ::State . get_state ( from || self , name )
148160 end
149161 this . define_method ( "#{ name } =" ) do |new_state |
162+ self . class . deprecation_warning "Direct assignment to state `#{ name } `. Use `#{ ( from && from != this ) ? from : 'state' } .#{ name } !` instead."
150163 yield name , React ::State . get_state ( from || self , name ) , new_state if block && block . arity > 0
151164 React ::State . set_state ( from || self , name , new_state )
152165 end
153166 this . define_method ( "#{ name } !" ) do |*args |
167+ self . class . deprecation_warning "Direct access to state `#{ name } `. Use `state.#{ name } ` instead." if from . nil? or from == this
154168 if args . count > 0
155169 yield name , React ::State . get_state ( from || self , name ) , args [ 0 ] if block && block . arity > 0
156170 current_value = React ::State . get_state ( from || self , name )
0 commit comments