React-tags: рдЕрдЧрд▓реЗ рдЗрдирдкреБрдЯ (v6) рддрдХ рд╕реБрдЭрд╛рд╡ рдкреНрд░реЛрдк рдЕрдкрдбреЗрдЯ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдордИ 2020  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: i-like-robots/react-tags

рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рд╕реАрдзреЗ onInput рдХрд╕реНрдЯрдо рд╣реИрдВрдбрд▓рд░ https://github.com/i-like-robots/react-tags/blob/6.0/lib/ReactTags.js#L130 рдХреЗ рдмрд╛рдж рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдореИрдВ рдЗрдирдкреБрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкрд┐рдЫрд▓реА рдХреЙрд▓ рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдирд╡реАрдирддрдо рдХреА рдирд╣реАрдВред

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

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рдорд┐рдирдЯ рдмрд┐рддрд╛рдП рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВ, рдиреАрдЪреЗ рджреА рдЧрдИ рдПрдиреАрдореЗрд╢рди рд╕реБрдЭрд╛рд╡ рдкреНрд░реЛрдк рдХреЛ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдирдкреБрдЯ рдХреЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реА рд╣реИ:

update

рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдлреА рд╕реАрдзрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдФрд░ рдПрдХ рдкреАрдЖрд░ рдмрдврд╝рд╛рдКрдВрдЧрд╛ред

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

рд╣рд╛рдп @yrik , рдбреЗрдЯрд╛ рдлрд╝реЗрдЪрд┐рдВрдЧ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдбреАрдмрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореБрдЭреЗ рдХреБрдЫ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

#205 рдореЗрдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЖрдкрдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрдЭрд╛рд╡ рд▓рд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ 6 рд╕реБрдЭрд╛рд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рд░реНрд╡рд░ рд╕реЗ 12 рдпрд╛ 15 рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ suggestionsFilter рдЕрднреА рднреА рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдирдП рдкреНрд░рд╛рдкреНрдд рди рд╣реЛ рдЬрд╛рдПрдВред

рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ " рдмреАрдпрд░ " рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рд╣реИ

  1. рд╕реБрдЭрд╛рд╡ рд╕реВрдЪреА рдЦрд╛рд▓реА рд╣реИ ( [] )
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ "рд╣реЛ" -> рд╕рд░реНрд╡рд░ [рдордзреБрдордХреНрдЦреА, рджрд╛рдврд╝реА, рдЪреБрдХрдВрджрд░, рдмрд┐рдпрд░] (рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рд╕рд░реНрд╡рд░ рд░рд┐рдЯрд░реНрди рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬрдм getOptions рдХрд╣рддреЗ рд╣реИрдВ)
  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ " рдордзреБрдордХреНрдЦреА " -> рд╕рд░реНрд╡рд░ рд░рд┐рдЯрд░реНрди [рдордзреБрдордХреНрдЦреА, рдЪреБрдХрдВрджрд░, рдмреАрдпрд░] рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ [рдордзреБрдордХреНрдЦреА, рджрд╛рдврд╝реА, рдЪреБрдХрдВрджрд░, рдмреАрдпрд░], рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рддрд╛рдЬрд╝рд╛ рдирд╣реАрдВ
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ " рдмреАрдпрд░ " -> рд╕рд░реНрд╡рд░ рд░рд┐рдЯрд░реНрди [рдмреАрдпрд░], рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ [рдордзреБрдордХреНрдЦреА, рдЪреБрдХрдВрджрд░, рдмрд┐рдпрд░], рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рддрд╛рдЬрд╛ рдирд╣реАрдВ

рдЕрдЧрд░ onInput async рд╣реЛрдЧрд╛ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╛ рдЕрдЧрд░ рдХрд╕реНрдЯрдо onInput рд╕реЗ const options = getOptions.call(this, query) рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рддреЛ рдпрд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдареАрдХ рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реВрдВ - рдЗрд╕рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдХреНрд╡реЗрд░реА рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?

рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

рдареАрдХ рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реВрдВ - рдЗрд╕рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдХреНрд╡реЗрд░реА рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?

рдмрд┐рд▓реНрдХреБрд▓! рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдкрд┐рдЫрд▓реА рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

рдореИрдВ jsfiddle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ lib рдХреЛ рдареАрдХ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ jsfiddle рдореЗрдВ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдХреЛрдИ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реНрд╡рдд: рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореИрдВ v6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд╡рд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЯреИрдЧ-рд╕реНрд╡рддрдГ рдкреВрд░реНрдг": "6.0.0-рдмреАрдЯрд╛.5"

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╣рд╛рд▓рд┐рдпрд╛ рдФрд░ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг componentWillReceiveProps() рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ v6 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдорд╛рдЙрдВрдЯ рдФрд░ onInput рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА, рдЬреЛ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдЗрд╕реЗ getDerivedStateFromProps() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

  static getDerivedStateFromProps (props, state) {
    const options = getOptions(props, state)
    return { options }
  }

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рдорд┐рдирдЯ рдмрд┐рддрд╛рдП рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВ, рдиреАрдЪреЗ рджреА рдЧрдИ рдПрдиреАрдореЗрд╢рди рд╕реБрдЭрд╛рд╡ рдкреНрд░реЛрдк рдХреЛ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдирдкреБрдЯ рдХреЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реА рд╣реИ:

update

рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдлреА рд╕реАрдзрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдФрд░ рдПрдХ рдкреАрдЖрд░ рдмрдврд╝рд╛рдКрдВрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ useEffect рдХреЛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

useEffect(() => {
  setOptions(getOptions(props, state))
}, [options]);

рдореИрдВрдиреЗ v6.0.0-beta.6 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

jraack picture jraack  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

williamsidewalk picture williamsidewalk  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yrik picture yrik  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

i-like-robots picture i-like-robots  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thienanle picture thienanle  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ