рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Menu
Menu.SubMenu
Menu.MenuItem
, рдХреАрдмреЛрд░реНрдб рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд▓рдкреЗрдЯрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ instance.onKeyDown
https://github.com/ant-design/ant-design/issues рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ Table.Column
, Table
children[n].props
рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЙрдкреНрд╕ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдЕрдм https://github.com/ant-design/ant-design/issues / 4029 https://github.com/ant-design/ant-design/issues/4324Collpase.Panel
, Collapse
children[n].header
рд╢реАрд░реНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдВрдЧреЗредTabs.TabPane
, Tabs
TabBar рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП children[n].tab
рдкрдврд╝реЗрдВрдЧреЗред https://github.com/ant-design/ant-design/issues/5165Select.Option
, Select
key
рд╡рд┐рдХрд▓реНрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИредDescriptions.Item
https://github.com/ant-design/ant-design/issues/27411рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ key
рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рддрдм рддрдХ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрдм рддрдХ рд╣рдо рд╕рднреА рдПрдкреАрдЖрдИ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓реЗрддреЗред рдЬреИрд╕реЗ
key => id
expandedKeys => expandedIds
selectedKeys => selectedIds
....
рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЛ atd-codemod рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ?
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдХреЛрдбрдореЙрдб рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВред
рдмрд╕ рдореЗрд░реА рдмрд╛рдд, рд▓реЗрдХрд┐рди, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХрд╛рд░рдХ рд╣реИред
рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдВрдмреЗрдбрд┐рдВрдЧ рдШрдЯрдХ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдПрдХ рдЖрдо рдмрд╛рдд рд╣реИред
рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрджреЗрд╣ рдХреЗ рдПрдВрдЯ-рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛рдПрдВред
рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рд╣реИ рдФрд░ рдпрд╣ рдкрд╣рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
@MacKentoch
рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╣рдо рдЗрд╕реЗ рддрдм рддрдХ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрдм рддрдХ рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рднреА рдирд╛рдореЛрдВ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓реЗрддреЗред
@ afc163 рдЕрдЧрд░ рд╣рдо рдЙрди рдПрдкреАрдЖрдИ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рд╣рдо рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рджреЗрдЦреЗрдВ: https://github.com/react-component/collapse/issues/73#issuecomment -323626120
рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП?
@benjycui рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВред
рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╕рдм рдХреЗ рдмрд╛рдж рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИред
рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
@benjycui рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЬрдм рдЖрдк рдПрдХ рдШрдЯрдХ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдо рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрджрд░ рдмрд╣реБрдд рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ред рдпрджрд┐ рдЖрд╡реЗрджрди рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ atd рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рди рдЕрдкрдирд╛рдКрдВ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдХ рдорд╛рдиреЗрдВред
рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдирд╛ рдХреЛрдИ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреА рдореИрдВрдиреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдереА рдЬрдм рдореИрдВрдиреЗ рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдЪреНрдЫреЗ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдПрдХреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдВрдЯреА рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдбреАрд▓рдмреНрд░реЗрдХрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди v3 рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП v3 рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреЗрдВред
рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рдж рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж)ред
рдЗрд╕ рдХреЛрд╢рд┐рд╢ рдХрд░ рдореЗрдВ рд╕рд┐рд░реНрдл рднрд╛рдЧ рдЧрдпрд╛ (рдЦреЗрдж рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЧрд▓рдд рд╣реИ) рдореЗрдиреВ рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реВрдЯрд░ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП <Link />
рдХреЗ рд╕рд╛рде рдореЗрдиреВ рдореЗрдВ рдЯреИрдЧ <Icon />
ред
рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдкрд╕рдВрджреАрджрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ?
IMHO, рдпрд╣ рдереНрд░реЗрдб рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХреНрд╕ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреАрд▓рдмреНрд░реЗрдХрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдбреЙрдХреНрд╕ рдХреЛ https://github.com/react-component/collapse/issues/73#issuecomment -323626120 рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдХреЛрдИ рд░рд╛рдЬреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реЛрдЧреА! рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХрд╛рдлреА рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
<Collapse>
<MyCollapseItem />
<MyCollapseItem2 />
</Collapse>
рдЬрд╣рд╛рдБ MyCollapseItem
рдФрд░ MyCollapseItem2
Collapse.Panel
рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16 рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд░реЗрдВрдбрд░ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреЛ рд░реЛрдХрдирд╛ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реИред
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдРрд╕рд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред
рдпрд╣рд╛рдБ рднреА - рдореБрдЭреЗ Tabs.TabPane
рдФрд░ Menu.MenuItem
ред
рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк рдХреЗ рд╕рд╛рде рд╕рд╣рд╛рд░рд╛ рдХреЗ рдмрд╛рдХреА рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓ рдорд┐рд▓рд╛
рдпрджрд┐ рдЖрдк React.Children.map(children, (child, index) => { ... })
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдПред рдЕрдВрдд рдореЗрдВ, рдкреНрд░рдореБрдЦ рд╕рдВрдкрддреНрддрд┐ рдХреЛ mykey/.0
рдЬреИрд╕рд╛ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдореИрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рднреА рдЧреБрдгреЛрдВ рдкрд░ рдПрдХ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ atd рд╕реЗ рджреВрд░ рдХрд░ рд╕рдХрддреА рд╣реИ ... рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрдкрдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдиреВ рдХреЗ рднреАрддрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред Item @yunshuipiao рдиреЗ рдПрдХ рд╕рдлрд▓ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП #
рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рдореБрджреНрджрд╛: рдореЗрдиреНрдпреВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ред рдпрд╣ рд╕рдмрдореЗрдиреВ рдХреЛ рддрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЬрдм рдЙрд╕рдХреЗ рдХрд┐рд╕реА рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдореЛрдб рдореЗрдВред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд░реЗрдЦрд╛рдПрдБ:
https://github.com/react-component/menu/blob/018d6f84d622ee140d9695ba57e7a773cf368efa/src/util.js#L40
https://github.com/react-component/menu/blob/018d6f84d622ee140d9695ba57e7a773cf368efa/src/SubMenu.jsx#L314
рдереЙрдЯ рдЖрдИрд▓реНрдб рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЗрд╕реА рддрд░рд╣ @jfreixa рдиреЗ рдЬреЛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдмрд╕ рдХрд╕реНрдЯрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рджрд┐рдП рдЧрдП рд╕рднреА рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкреИрдирд▓, рдЬреИрд╕реЗ
<Collapse>
<Custom/>
<Custom/>
</Collapse>
Custom.render() {
return (
<Panel {...this.props}>
<div>My custom stuff here</div>
</Panel>
)
}
@Ncknuna рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ред
рд▓рд┐рдкрдЯреЗ рд╣реЛрдиреЗ рдкрд░ Menu.Item рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рд╣реИ?
@Nomeyho рдореИрдВрдиреЗ рддрд░реНрдХ рдХреЛ рд╕рдорд╛рдкреНтАНрдд рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рдкреНтАНрдд рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдХрд░рдХреЗ ant-menu-submenu-selected
рдХреНтАНрд▓рд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдореВрд▓ рдЪреЗрдХ рдХреА рдЯрд┐рдкреНтАНрдкрдгреА рдХрд░рддреЗ рд╣реБрдП, рддрдм рдореЗрд░реЗ рд░реИрдкрд░ рдореЗрдВ className
рд░реВрдк рдореЗрдВ рдХрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░рдирд╛:
function loopMenuItemRecusively (children: Array<any>, keys: Array<string>, ret: { find: boolean }) {
if (!children || ret.find) {
return
}
React.Children.forEach(children, (c: any) => {
if (ret.find) {
return
}
if (c) {
const construt = c.type
// Original check that caused problems. I'm not concerned about omitting it
// because I don't plan on putting a bunch of weird, large stuff in my menus...
// if (!construt || !(construt.isSubMenu || construt.isMenuItem || construt.isMenuItemGroup)) {
// return;
// }
if (keys.indexOf(c.key) !== -1) {
ret.find = true
} else if (c.props && c.props.children) {
loopMenuItemRecusively(c.props.children, keys, ret)
}
}
})
}
function isChildrenSelected (children: Array<any>, selectedKeys: Array<string>) {
const ret = { find: false }
loopMenuItemRecusively(children, selectedKeys, ret)
return ret.find
}
// Omitting other custom code below...
export const SubMenu = ({ children, className, selectedKeys, title, ...rest }: any) => {
const isSelected = isChildrenSelected(children, selectedKeys)
className = [
className,
isSelected ? 'ant-menu-submenu-selected' : ''
].filter(className => classname).join(' ')
return (
<SubMenu title={title} className={className} selectedKeys={selectedKeys} {...rest}>
{children}
</SubMenu>
)
}
рдХреНрдпрд╛ рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣рд▓ рд╣реИ?
рдореИрдВ @ChuckJonas рд╕реЗ рд╕рд╣рдордд
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ atd рд╕реЗ рджреВрд░ рдХрд░ рд╕рдХрддреА рд╣реИ ... рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрдкрдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдореЗрдиреВ SubMenu рдФрд░ Menu.items рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдиреНрдп рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдЕрдкрдиреЗ "CustomSubMenu" рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ... рдпрд╣ "рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп" рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
_MainFile.js_
Import CustomSubMenu from './OtherFile.js';
<Menu>
<CustomSubMenu />
<CustomSubMenu2 />
<CustomSubMenu3 />
</Menu>
рдФрд░ OtherFile.js рдЗрд╕ рддрд░рд╣:
render(){
return(
<SubMenu>
<SubMenu.item />
<SubMenu.item2 />
etc...etc...
</SubMenu>
);
}
рд╕рдмрдореЗрдирд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрд┐рдд):
const SubMenuArray = ({ ...props }) =>
[1, 2].map(i => (
<Menu.SubMenu {...props} eventKey={`item_${i}`} subMenuKey={`${i}-menu-`} />
));
рдЬрдм рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо:
eventKey
рдФрд░ subMenuKey
, рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПрдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╢рд╛рдпрдж рд╣реЛрдЧрд╛:
const SubMenuWrapper = ({ children, ...props }) =>
React.Children.map(children, (child, i) =>
React.cloneElement(child, {
...props,
eventKey: `item_${i}`,
subMenuKey: `${i}-menu-`
})
);
рдЙрдкрдпреЛрдЧ:
<Menu>
<SubMenuWrapper>
<CustomSubMenu title={"one"}/>
<CustomSubMenu title={"two"}/>
</SubMenuWrapper>
</Menu>
рдлрд┐рд░, рдЖрдк рд╕рдВрднрд╡рддрдГ рд╕рд░рдгреА рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдареЛрд╕ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдВрдЬреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдореЗрдиреВ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ, рд╣рдо itemKey
рдкреНрд░реЛрдк рдХрд╛ рдкрд░рд┐рдЪрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдореЗрдиреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП context
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдЕрднреА рднреА рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ key
рд╕реЗ itemKey
рдмрджрд▓рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рд╣рдо selectedKeys
рдЬреИрд╕реЗ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
@yesmeck рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝реА рджреЗрд░ рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ ant design
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ ( рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ )ред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирдП context API
рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╡рд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ
рд╣рд╛рдВ, рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП context
рдмрдЬрд╛рдп cloneElement
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рдзрд╛рди "React.Children.forEach" рдФрд░ "React.cloneElement" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдирдП рд╕рд╣рд╛рд░рд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо:
<Select>
{({ onSelect }) => (
<div>
<Option onClick={onSelect} key="0">option1</Option>
<Option onClick={onSelect} key="1">option2</Option>
</div>
)
</Select>
рдФрд░ atd рдЪреБрдирд┐рдВрджрд╛ рд╕реНрд░реЛрдд рднреА "React.Children.forEach" рдФрд░ "React.cloneElement" рдХреЗ рдмрдЬрд╛рдп рдлрд╝рдВрдХреНрд╢рди рдмрдЪреНрдЪреЛрдВ рдХреЗ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдорд╛рдл рдХрд░рдирд╛ рдЕрдЧрд░ рдпрд╣ рдПрдХ рдмреЗрд╡рдХреВрдл рд╕рд╡рд╛рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рд░рд┐рдПрдХреНрдЯ рдФрд░ рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо рдХрд┐рд╕реА рдЕрднрд┐рдХреНрд░рд┐рдпрд╛-рд░рд┐рдбреНрдпреВрдХ рдПрд╕рдкреАрдП рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдиреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЖрдк рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрдЯрд┐рд▓ рдПрд╕рдкреАрдП рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рд╣реИ?
рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?
рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореЗрдиреВ рдЖрдЗрдЯрдо HOC рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдирдорд╕реНрддреЗ ! рдпрд╣рд╛рдБ рднреА, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо Select.Option
рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рд╕реА рднреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдиреЗ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХреА, рдореЗрд░реЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЪрдпрди рд╣реИ ...ред
import React from 'react';
import PropTypes from 'prop-types';
import { Select } from 'antd';
const { Option } = Select;
const PictureOption = ({ label, value, pictureId, ...props }) => (
<Option label={label} value={value} className="select-item" {...props}>
<div className="select-item__thumbnail">
<img src={pictureId} alt="item-img" />
</div>
<div className="select-item__name">{label}</div>
</Option>
);
PictureOption.propTypes = {
label: PropTypes.string.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
pictureId: PropTypes.string.isRequired,
};
export default PictureOption;
рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ UI рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CASL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдХрд┐ рд╕рдмрдореЗрдирд╕ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ isRootMenu рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЙрдкреНрд╕ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВрдиреЗ рд╕рдмрдореЗрдирд╕ рдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ 'рд╣рд╛рде рд╕реЗ рд╕рд╣рд╛рд░рд╛' рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред
`` ``
рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛() {
// ### Administration Menu ###
const AdminMenu = ({ ...props }) => {
return (
<Can I="access" on="admin-content">
<Menu.Divider {...props} />
<Menu.SubMenu
{...props}
title={
// FIXME: Icon is not rendered... :-/
<span>
<Icon type="tools" />
<span>Administration</span>
</span>
}
// title={<span>Administration</span>}
key="admin">
<Menu.Item key="users" tabIndex={0}>
<Icon type="android" />
<span>User Administration</span>
</Menu.Item>
<Menu.Item key="permissions" tabIndex={0}>
<Icon type="lock" />
<span>Permissions</span>
</Menu.Item>
</Menu.SubMenu>
</Can>
);
};
return (
<Layout id="menu-component-layout">
<Layout.Sider width="300px" collapsible="false" trigger={null}>
<Menu theme="dark" mode="inline" defaultSelectedKeys={['user']} defaultOpenKeys={['user', 'config', 'admin']}>
<AdminMenu />
</Menu>
</Layout.Sider>
<Layout.Content id="menu-component-content">
<h3>Page containing a side menu</h3>
</Layout.Content>
</Layout>
);
}
`` ``
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рд╕рдмрдореЗрдиреВ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдХрди рдЧрд╛рдпрдм рд╣реИред
рдХрд┐рд╕реА рдХреЛ рднреА рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рд╢реЛрдХреЗрд╕ рдмрдирд╛рдпрд╛: https://github.com/gibelium/meteor-react-antd-casl
GitHubрдПрдХ рдЙрд▓реНрдХрд╛ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ CASL рдкреНрд░рд╛рдзрд┐рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди
@ Gibelium рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрди рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╣рдХрджрд╛рд░ рд╣реИрдВред рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд░реЗрдкреЛ рдкрд░ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдФрд░ рдЖрдЗрдХрди рдХреЛ рднреВрдд рдмрдЯрди рд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдмрдЯрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдХрди рдмрдЯрди рдореЗрдВ / рдкрд░ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...
@gotjoshua рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рд╕рдорд░реНрдкрд┐рдд рдореБрджреНрджреЗ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ?
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдореЗрдиреВ рдЖрдЗрдЯрдо рд╕реЗрдЯ рдХрд░рдирд╛ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдиреВ рдХреЗ defaultOpenKeys
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЙрдХреНрд╕ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдмрдЧ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрд░реЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИред рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВ, рддрд╛рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрддрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдирд╛ рдкрдбрд╝реЗ рдХрд┐ рдЖрдк рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХреЗрдВ, рд░рд┐рдПрдХреНрдЯ рдХреАрдЬрд╝ рдкрд░ рд░рд┐рд▓реЗрдпрд┐рдВрдЧ рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдЕрдм рдЖрдк рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрдИ рдПрдЪрдУрд╕реА рдпрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирд╛рдЬреБрдХ рд╣реИрдВред
рдпрд╣ рд╡рд╛рдХрдИ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдареАрдХ рдХрд░ рд▓реЗрдВрдЧреЗред
рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рд╕реЗрдЯ рдореЗрдиреВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреБрдЫ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ЁЯФе
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдореИрдВ (рд╢рд╛рдпрдж) рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рдореИрдВ Redux рдХрдиреЗрдХреНрдЯреЗрдб рдШрдЯрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ Redux рд╕реНрдЯреЛрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде Select
рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╣рд░ рдЬрдЧрд╣ рдПрдХ рд╣реА рдХреЛрдб "рдХреЙрдкреА-рдкреЗрд╕реНрдЯ" рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдореИрдВ Form.getFieldDecorator
рдЕрдВрджрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди connect
HOC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдпрд╣ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ред рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ forwardRef
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рд╣реИ:
connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true })(Component);
рдпрд╣ рд╕рдорд╛рдзрд╛рди connect
HOC рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ React.foradref рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рд╣рд╛рдБ рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдХ рдореБрджреНрджреЗ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ), рдЕрдм рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рд╕рд╛рде рд▓рд┐рдкрдЯреЗ Tabs.TabPane
рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ -> рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдкрд┐рдВрдЧ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рд▓ рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВред
рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд░рд▓ рдФрд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ?
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди рдХреГрдкрдпрд╛?
рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк рдХреЗ рд╕рд╛рде рд╕рд╣рд╛рд░рд╛ рдХреЗ рдмрд╛рдХреА рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓ рдорд┐рд▓рд╛
рд▓рд┐рдкрдЯреЗ рдШрдЯрдХ рд╕реЗред
рдпрд╣ рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп index.js:1437 Warning: React does not recognize the
staticContext prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase
staticcontext`ред рдпрджрд┐ рдЖрдкрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ DOM рддрддреНрд╡ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВред
index.js: 1437 рдЪреЗрддрд╛рд╡рдиреА: рдкреНрд░реЛрдк dispatch
рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рдорд╛рди
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ ... рдореИрдВ Menu.Item рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП HOC рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдиреБрдорддрд┐ рдШрдЯрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди atd рдпрд╣ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ ... рджреБрдЦрдж
рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ ...
рдФрд░ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдмрд╛рдХреА рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрддрдиред рдкреИрдирд▓ (рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╕реА-рдкреИрдирд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдВрдЪреЗрдВ)
export const CustomPanel: React.FC = ({ header, children, ...props }) => {
// do whatever you like
return <Collapse.Panel header={header} {...props}>
{children}
</Collapse.Panel>
};
рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<Collapse>
<CustomPanel key="first" header="Header 1">Body</CustomPanel>
<CustomPanel key="second" header="Header 2">Body</CustomPanel>
</Collapse>
4.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛!
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред
рд╡рд╕реНрддреБрддрдГ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдкрдпреЛрдЧреА рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдХрднреА-рдХрднреА рд╕рд░рд▓ рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг)ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рдореЗрдиреВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдЪрдореБрдЪ рд╕реНрдкрд┐рдирд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп Menu.Item
рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдЖрддрд╛ред
рдпрд╣ рдЗрд╖реНрдЯрддрдо рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред
рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ ...
рдФрд░ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдмрд╛рдХреА рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрддрдиред рдкреИрдирд▓ (рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╕реА-рдкреИрдирд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдВрдЪреЗрдВ)
рдЬрдмрдХрд┐ рдпрд╣ рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ! рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЖрдк рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред
Ie рдпрджрд┐ рдЖрдкрдХрд╛ <SubMenu>
<Menu>
рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдмрдЪреНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ defaultOpenKeys
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред ЁЯШЮ
рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ FYI рдХрд░реЗрдВред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рд╡рддреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП (рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдореВрд▓реА рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ) рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдВрдЯреАрдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреЛрдИ рддрдп рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рди рдХреЗрд╡рд▓ рдмреЙрдХреНрд╕ рд╕реЗ рд╕реАрдзреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдпрдерд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдПрдкреАрдЖрдИ рдХреЛ рдЬреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдПрдЪрдУрд╕реА рдХреЗ рдЧреИрд░-рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд╣реИред
рдХреГрдкрдпрд╛, рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдареАрдХ рд╣реЛрдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рднреА рдорд┐рд▓реЗрдВрдЧреЗред
рдХреГрдкрдпрд╛, рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдареАрдХ рд╣реЛрдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рднреА рдорд┐рд▓реЗрдВрдЧреЗред
рд░рдЦрд░рдЦрд╛рд╡ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ, рдЖрдк рдбреЙрдХреНрд╕ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рднреА рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
@ afc163
рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ ...
рдФрд░ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдпрд╛рдиреА рдХреЛ рд╕рд╣рд╛рд░рд╛ред рдкрддрдиред рдкреИрдирд▓ (рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╕реА-рдкреИрдирд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдВрдЪреЗрдВ)
export const CustomPanel: React.FC = ({ header, children, ...props }) => { // do whatever you like return <Collapse.Panel header={header} {...props}> {children} </Collapse.Panel> };
рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<Collapse> <CustomPanel key="first" header="Header 1">Body</CustomPanel> <CustomPanel key="second" header="Header 2">Body</CustomPanel> </Collapse>
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ Panel
рд▓рдкреЗрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
<PersonalInfoPanel
header="header"
key={"personalInfo" + i}
extra={genExtra()}
/>
PersonalInfoPanel
рдЕрдВрджрд░:
function PersonalInfoPanel(props, ref) {
return (
<Panel header={props.header} key={props.key} extra={props.extra}>
...
рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
function PersonalInfoPanel(props, ref) {
return (
<Panel {...props}>
...
рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВ?
<Panel {...props}> ...
рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВ?
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрддрди рдХреЛ рд╣реЗрдбрд░, рдХреБрдВрдЬреА рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд (рдЖрдкрдХреЗ рдЧреИрд░-рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░реЙрдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрддрди рдХреЗ рдЗрди рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдкреИрдирд▓ рдШрдЯрдХ рдкрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдмрджрд▓реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди ... рдкреНрд░реЙрдкрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЗ рдХреЗ рдкреИрдирд▓ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╕рдВрд▓рдЧреНрди рд╣реЛрдЧрд╛ ( рд╕рд╣рд┐рдд, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
MANY (рдпрд╛ .. рд▓рдЧрднрдЧ) рдбреЗрд╡рд▓рдкрд░ рдХрд╕реНрдЯрдо рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг)
рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ Menu рдФрд░ Menu Item рдХреЛ Opaque props рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
<Menu>
{ menus.map((item) => {
if (item.to) {
return <Menu.Item title={item.title} />;
}
// some codes...
return null;
})}
</Menu>
@moonjoungyoung @adamerose
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдзрд╛рдЧрд╛ рдкрдврд╝рд╛ рд╣реИ?
рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдПрдиреЙрдЯ рдШрдЯрдХ рдореЗрдВ рдЖрд░рд╛рдо рд╕рд╣рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП react-router
NavLinks
antd
Menu
рд▓рд┐рдП рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ - рдореБрдЭреЗ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗред
_edit- рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдЪрдпрдирд┐рддрдХреЗрдИрдПрд╕ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ_
const Nav = withRouter(() => {
const auth = store.isAuthenticated;
return (
<Menu selectedKeys={[history.location.pathname]} mode="horizontal">
<NavItem id="/">Home</NavItem>
{auth && <NavItem id="/create">Create Post</NavItem>}
{!auth && <NavItem id="/sign-in">Sign In</NavItem>}
{!auth && <NavItem id="/register">Register</NavItem>}
</Menu>
);
});
const NavItem = ({ ...props }) => (
<Menu.Item {...props} key={props.id}>
<NavLink exact to={props.id}>
{props.children}
</NavLink>
</Menu.Item>
);
@moonjoungyoung @adamerose
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдзрд╛рдЧрд╛ рдкрдврд╝рд╛ рд╣реИ?
рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдПрдиреЙрдЯ рдШрдЯрдХ рдореЗрдВ рдЖрд░рд╛рдо рд╕рд╣рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рдКрдкрд░ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╣рд░ рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдиреАрдЪреЗ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ Menu.Item
рдкрд░ рдЙрдиреНрд╣реЗрдВ рдлреИрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдЕрднреА рднреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдШрдЯрдХ рдЯреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ
рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ ...
рдФрд░ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдпрд╛рдиреА рдХреЛ рд╕рд╣рд╛рд░рд╛ред рдкрддрдиред рдкреИрдирд▓ (рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рд╕реА-рдкреИрдирд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдВрдЪреЗрдВ)
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ "{... рдкреНрд░реЙрдкреНрд╕}" рдХреЗ рдкреАрдЫреЗ "рд╣реИрдбрд░ = {рдЧрдгрдирд╛_рд╣реЗрдбрд░}" рд▓рдЧрд╛рдирд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкреИрдирд▓ рдХрд╛ рд╣реЗрдбрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "{... рдкреНрд░реЙрдкреНрд╕}" рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ "рд╣реЗрдбрд░" рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ "{... рдкреНрд░реЙрдкреНрд╕}" рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рд╣реЗрдбрд░" рдЬреЛ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ "рд╣реЗрдбрд░" рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рджреЗрддреЗ рд╣реИрдВред
рдореЗрд░рд╛ marcin-piela рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
export const CustomPanel: React.FC = ({ headerinfo, children, ...props }) => {
// do whatever you like
const calculated_header = {() => headerinfo.someinformation }
return <Collapse.Panel {...props} header={calculated_header} >
{children}
</Collapse.Panel>
};
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЙрдХреНрд╕ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдмрдЧ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрд░реЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИред рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВ, рддрд╛рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрддрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдирд╛ рдкрдбрд╝реЗ рдХрд┐ рдЖрдк рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХреЗрдВ, рд░рд┐рдПрдХреНрдЯ рдХреАрдЬрд╝ рдкрд░ рд░рд┐рд▓реЗрдпрд┐рдВрдЧ рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдЕрдм рдЖрдк рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрдИ рдПрдЪрдУрд╕реА рдпрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирд╛рдЬреБрдХ рд╣реИрдВред
рдпрд╣ рд╡рд╛рдХрдИ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдареАрдХ рдХрд░ рд▓реЗрдВрдЧреЗред