React: рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдорд╛рди рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдЪреЗрддрд╛рд╡рдиреА

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдореЗрд░реЗ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рдкрд╕рдВрдж рд╣реИ

<input type={dynamicTypeValue} value={dynamicValue} />

рдЕрдЧрд░ рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдЗрдирдкреБрдЯ рдХреЛ рдПрдХ рдирдВрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, (рдЬреИрд╕реЗ dynamicTypeValue = 'number'; dynamicValue = 5 ) рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджреЗрдВ: ( dynamicTypeValue = 'string'; dynamicValue = '01/01/2016' ) рдореБрдЭреЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ
рдирдпрд╛ рдорд╛рди рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ:

The specified value "01/01/2000" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?
DOMPropertyOperations.js:142 The specified value "01/01/2012" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?

screen shot 2016-04-07 at 6 07 45 pm

рдХреНрдпрд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг 16.4.1 рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЦрд░рд╛рдм рдХреНрд░рдо рдореЗрдВ рдкреНрд░реЛрдк рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ (рдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП) рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо DOM рдСрдкрд░реЗрд╢рди рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреВрд░реНрдг рдХрд░рдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рд╣реИрд░рд╛рди рд╣реВрдБ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ .type рдПрдХ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдкрд╣рд▓реЗ <input> :

https://github.com/facebook/react/blob/0b1fd186855a48dff78987f13466cec1e579b78c/src/renderers/dom/client/wrappers/ReactDOMInput.js#L74

рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдЗрди рдЬреИрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдмрд╕ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред

(# 2242 рднреА рджреЗрдЦреЗрдВ, рдЬреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдлрд╛рдИ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд╕рд╛рди рдерд╛ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдордЧреНрд░ рдЖрд╡рд░рдг рдереЗ рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдШрдЯрдХ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рдШрдЯрдХ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рд╣реИред)

рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдЗрдирдкреБрдЯ рдкрд░ key рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп рдПрдХ рдирдпрд╛ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

Object.assign V8 рдСрд░реНрдбрд░ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ 15 рд╕реЗ рдкрд╣рд▓реЗ рдерд╛?

@gaearon рдпрд╣ рдЕрднреА рднреА 15 рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣реИ

@gurinderhans рдХреМрди рд╕рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЖрдк рдПрдХ jsfiddle рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ?

@jimfb рдпрд╣рд╛рдБ рдЖрдк рдЬрд╛рдУред
рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдХреНрд░реЛрдо 50.0.2661.86 (64-рдмрд┐рдЯ)
JSFiddle: https://jsfiddle.net/mb90na04/1/

рдХреНрд░реЛрдо рдбрд┐рдмрдЧрд░ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛:
рдХреЛрдб рдХреА рдпрд╣ рдкрдВрдХреНрддрд┐ рд╣реИ, https://github.com/facebook/react/blob/master/src/renderers/dom/sared/ReactDOMComponent.js#L829 , рдЬреЛ https://github.com/ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж _updateDOMProperties рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрддреНрд╡ type рд╡рд┐рд╢реЗрд╖рддрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдПрдХ рдмрд╛рд░ _updateDOMProperties рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░, type value рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред

_ PS: рдХреЛрд░реНрд╕ рдХреА, рдХреЙрд▓ рдХреЛ ReactDOMInput.updateWrapper рдХреЗ рдЕрдВрджрд░, switch case рдЕрдВрджрд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫрд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реВрдБ рдХрд┐ рддрддреНрд╡ type рдХрд╣рд▓рд╛рддрд╛ рд╣реИред textarea

рдЖрдк рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдорд╛рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдпрд╛ рдЕрджреНрдпрддрди рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ ReactDOMInput.updateWrapper рдЕрдВрджрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ <input> рдпрд╛ <textarea> рдЬреИрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

рдпрд╣рд╛рдБ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░рд▓ рдорд╛рдорд▓рд╛ рд╣реИ: https://jsfiddle.net/97gr5e65/1/

рдпрд╣ рдХреЗрд╡рд▓ number рд╕реЗ text рдмрджрд▓рдиреЗ рдкрд░ рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рднреА рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рд╕рдлрд╛рд░реА рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдпрд╣ ReactTestUtils рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрдЧ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рд╣рд╛рд░ рдХрд┐рдпрд╛ред рдореЗрд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╕рд┐рд░реНрдл type value рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдерд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭрджрд╛рд░ рд╣реИ?

https://github.com/facebook/react/compare/master...ununzaker : nh-input-change-fix? Expand = 1?

рдпрд╣ рдмрдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЙрдерд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

рд╣рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .updateWrapper рдиреАрдЪреЗ рдХреЙрд▓ _updateDOMChildren рдХреЙрд▓ (рдЙрдиреНрд╣реЗрдВ getNativeProps рдХреЙрд▓ рд╕реЗ рдмрд╛рд╣рд░ рдмрдВрдЯрд╡рд╛рд░реЗ)? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдБред рдореИрдВ рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рдерд╛ред DOM рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдХреЛ рд╢реВрдиреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдорд╛рди рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред

рдЕрд╕рдВрдмрдВрдзрд┐рдд, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ JSDOM рдЗрд╕реЗ рдЙрдард╛рддрд╛ рд╣реИред

Https://github.com/facebook/react/pull/7333 рдореЗрдВ рдХрд┐рдпрд╛

рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг 16.4.1 рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

framerate picture framerate  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

h1orz picture h1orz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jimfb picture jimfb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

huxiaoqi567 picture huxiaoqi567  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kocokolo picture kocokolo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ