2.9.1
рдмреНрд░рд╛рдЙрдЬрд╝рд░
рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
footer
рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕рдореЗрдВ tr
рдФрд░ td
<Table
dataSource={dataSource}
footer={() => {
return (
<tr className='ant-table-row ant-table-row-level-0'>
<td>цА╗шоб</td>
<td>цА╗шоб</td>
<td>цА╗шоб</td>
</tr>
)
}}
/>
dataSource
рдкреНрд░реЛрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВdataSource.push({id: 'цА╗шоб', price: '3000'})
рдПрдХ рддрд╕реНрд╡реАрд░ рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ:
footer
рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди footer
рдкреНрд░реЛрдк рдЯреЗрдмрд▓ рдЯреЗрдмрд▓ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред
dataSource
рдкреНрд░реЛрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рд▓рдВрдмрд╛рдИ pageSize
рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирдорд╕реНрдХрд╛рд░ @TangMonk , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЯреЗрдмрд▓ рдХреЗ рдбрд┐рдлреЙрд▓реНрдЯ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЛ рдбрд┐рд╕реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреЗрдЬрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢рд╛рдпрдж рд╣рдо footer
рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рдЯреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@yesmeck , рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ: # 3591, # 1483, # 4581
@ afc163 , рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ pageSize
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЛ рд╕рдЦреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХреЗ рдмрдЬрд╛рдп рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
рдирдорд╕реНрддреЗ,
рдХреНрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛?
@yesmeck рдкрд╛рдж рд▓реЗрдЦ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд <div>
рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ <tfoot>
рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрд╛рдп рд╣реИред
рдлреЛрд▓реНрдХреНрд╕ dataSource
рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдХреНрддрд┐ рдХреЛ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯреЗрдмрд▓ рд▓реЗрдЖрдЙрдЯ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЙрд▓рдо рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВред
рд╣рд╛рдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА footer
рдкреНрд░реЛрдк рд╣реИ, <tfoot/>
рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗред
рдореИрдВ рд╡рд░реНрддрдорд╛рди footer
рдкреНрд░реЛрдк рдХреЛ рдкреБрди: рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ <tfoot />
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рд╕реНрддреБрдд рди рд╣реЛ, рдПрдХ рдирдпрд╛ tfoot
рдкреНрд░реЛрдк рди рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдордд рд╕реЛрдЪреЛ рдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рддреЛрдбрд╝ рджреЗрдЧрд╛ред
@yesmeck рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдз рдХреА рдЬрд╛рддреА рд╣реИред рдореИрдВ рд╕рд╛рд░рд╛рдВрд╢ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╣реИрдЯреА рдбреЛрдо рд╣реЗрд░рдлреЗрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдПрдХ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реИред
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдореЗрдВ рдХреЛрдИ рд╣реИ? рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдЖрдк рдкреАрдЖрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@yesmeck рдпрд╣рд╛рдВ рдЖрдк рдЬрд╛рдПрдВ: https://github.com/react-component/table/pull/191
рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг / рд░реЗрдВрдбрд░рдлрд╝реБрдЯрд░ рдЗрдирдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ
tfoot
API рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ column
рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
const columns = [{
title: 'Age',
dataIndex: 'age',
key: 'age',
footer: (data) => {
return <div>Summary: {data.reduce((sum, record) => sum + record.age, 0)}</div>
},
}, {
title: 'Name',
dataIndex: 'name',
key: 'name',
}, {
title: 'Address',
dataIndex: 'address',
key: 'address',
}];
renders
рд╡рд░реНрддрдорд╛рди Table[footer]
рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рд╣реЛрдЧреАред
@hackape рдЖрдк рдПрдХ рдирдпрд╛ рдкреАрдЖрд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдЬрд╝рд░реВрд░
https://codesandbox.io/s/m45r6o4nj8
рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд▓рд┐рдВрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ
@yesmeck рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдШрдЯрдХ / рддрд╛рд▓рд┐рдХрд╛ # 195 рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ, рдЕрдм рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛?
рджреЗрдЦрд╛ рдпрд╣ рд╡рд┐рд▓рдп it @yesmeck
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рд╛ред рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рддрдерд╛рдХрдерд┐рдд "рдкрд╛рдж рд▓реЗрдЦ" рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рддрд╛рд▓рд┐рдХрд╛ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЗ рдареАрдХ рдиреАрдЪреЗред
рдЙрджрд╛рд╣рд░рдг:
рдкреВрд░реЗ рд╕рдордп рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рдРрд╕рд╛ рд╕рд╛рдзрди рд╣реИ, рдЬреЛ рдПрдХ рд╢рдмреНрдж "рд╕рд╛рд░рд╛рдВрд╢ рдкрдВрдХреНрддрд┐" рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ, dataSource
рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд┐рдП рдмрд┐рдирд╛, "рдкрд╛рдж рд▓реЗрдЦ" рдирд╣реАрдВред рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдордЭред
@hackape рдЖрдк рдХреЙрд▓рдо рдЧреНрд░реБрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, https://codesandbox.io/s/pmorq2x2lq рджреЗрдЦреЗрдВ
рд╣рд╛рдВ, рдХреНрдпрд╛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдерд╛, рдпрд╣ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдорддрд▓рдм рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рдиреЗ рджреЗрдВред
рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдо column.footer
API рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ column.summary
ред
const columns = [{
title: 'Age',
dataIndex: 'age',
key: 'age',
summary: {
render: (data) => {
return <div>Summary: {data.reduce((sum, record) => sum + record.age, 0)}</div>
},
position: 'bottom', // default to 'bottom', could be 'top'
}
}]
@yesmeck https://github.com/ant-design/ant-design/issues/6896 рдкрд░ рд╡рд┐рдЪрд╛рд░
рдореИрдВ pinnedTopData
рдФрд░ pinnedBottomData
рдирд╛рдо рдХреЗ рджреЛ рдирдП рд╕рдорд░реНрдердХ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
const columns = [
{ title: 'Price', dataIndex: 'price' },
{ name: 'Name', dataIndex: 'name' },
];
const data = [
{ price: 3, Name: 'Foo' },
{ price: 5, Name: 'Bar' },
];
const pinnedData = [
{ price: <span style={{ fontWeight: 'bold' }}>Total: 8</span> }
];
<Table
columns={columns}
dataSource={data}
pinnedTopData={pinnedData}
pinnedBottomData={pinnedData}
/>
рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ:
| рдХреАрдордд | рдирд╛рдо |
| ---------- | ------ |
| рдХреБрд▓: 8 | |
| 3 | рдлреВ |
| 5 | рдмрд╛рд░ |
| рдХреБрд▓: 8 | |
# 6896 рдФрд░ рдЗрд╕реА API рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдХреНрдпрд╛ рдирдИ рдкреНрд░рдЧрддрд┐ рд╣реИ?
@ рдиреЛрдХреЗрд╕реА рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИред рдЙрд╕рдиреЗ рдЗрд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреА рдкреБрдирдГ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЖрдзрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд╡реАрдирддрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди antd's рдкреИрдХреЗрдЬ .json рдХреЛ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ,
1. рдпрджрд┐ рдХрдИ рдХреЙрд▓рдо рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдКрдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
2. рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╢реАрд░реНрд╖рдХ рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрддрдирд╛ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВ рдФрд░ рдзреНрдпрд╛рди рджреЗ рд░рд╣рд╛ рд╣реВрдВ , рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЪрд┐рдВрддрд╛ 2 рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрджреНрдпрддрди ??
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдЬрд╣рд╛рдЬ рдХрд░ рд╕рдХреЗрдВ, рдЕрдм рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ table.props.components.body.wrapper
рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рд╛рдкреНрдд props.children
рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░реЗрдВред
https://codesandbox.io/s/xpvwpx0npw
рдореИрдВрдиреЗ рд╕реАрдзреЗ рдбреЛрдо рддрддреНрд╡ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдФрд░ рдХреБрд▓ рдХрд╛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ред рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рдж рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рд░реА рдбреЛрдо рддрддреНрд╡ рдХреЗ рд╕реАрдзреЗ рд╣реЗрд░рдлреЗрд░ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@ LDD123 рд╕реНрдХреНрд░реЙрд▓ рдПрдХреНрд╕ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╛рдж рд▓реЗрдЦ рдкрд░ рд╣реИред рдкрд╛рдж рдХреЗ рд╕рд╛рде рд╢рд░реАрд░ рдХреЛ рднреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
@jagratiTomar рдмреЙрдбреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдЧреА рдЬрдм рдлреВрдЯрд░ рд╕реНрдХреНрд░реЙрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдмреЙрдбреА рдХреЗ рд╕реНрдХреНрд░реЙрд▓-рдПрдХреНрд╕ рдХреЛ рдлреВрдЯрд░ рдХреЗ рд╕реНрдХреНрд░реЙрд▓-рдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзрддрд╛ рд╣реВрдВ
@ LDD123 рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкреИрд░ рдХреЛ рдирд╣реАрдВ
@jagratiTomar рдЕрдм, рдореИрдВ рд╕реНрдХреНрд░реЙрд▓-рдПрдХреНрд╕ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣ рдареАрдХ рд░рд╣реЗрдЧрд╛
@ LDD123 рддреЛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╕реНрдХреНрд░реЙрд▓-рд╡рд╛рдИ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг
рдпреАрдк
рдирдорд╕реНрдХрд╛рд░ @yesmeck @ afc163 ,
рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдиреЗ рд╢рд░реАрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдФрд░ UX рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЗ рдареАрдХ рдиреАрдЪреЗ рдкрд╛рдж рд▓реЗрдЦ (рдЗрд╕рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдорд╛рди) рд░рдЦрд╛ рд╣реИред рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдФрд░ рдкрд╛рдж рд▓реЗрдЦ рдкрд░ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд░ рдХреЗрд╡рд▓ рдПрдХреАрдХреГрдд рдорд╛рди рд╣реИред рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП ColumnGroup рддреАрд░реЛрдВ рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рдХреА рдУрд░ рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдпрд╣ рд╕реНрдЯрд╛рдЗрд▓ рдлреБрдЯрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЗрд╕реЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдж рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрд▓рдЧ рд░рдВрдЧ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реЗрдкрд░реЗрдЯрд░ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рдмрд╕ рдХрд░реВрдБрдЧрд╛:
.my-table tfoot > tr {
background-color: gray;
}
рддрд╛рд▓рд┐рдХрд╛ рдШрдЯрдХ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
<Table appendColumnFooterTop={true}>
<Column
footer={(data) => <div>Summary: {data.reduce((sum, record) => sum + record.age, 0)}</div>}
/>
</Table>
рдбрд┐рдЬрд╝рд╛рдЗрди:
рдЙрди рдкреВрд░реНрд╡-рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рд╕реЗ рдЙрди рдХрдХреНрд╖реЛрдВ рдореЗрдВ рдЕрди-рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдмреБрд░рд╛ рди рдорд╛рдиреЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдирдП рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЕрдЧрд░ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ 2 рдпрд╛ 3 рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдХреЙрд▓рдо рдкрд╛рдж рд▓реЗрдЦ рдФрд░ рдпрд╣ рд╕рдВрд░реЗрдЦрдг рд╣реИ) рддреЛ рдореИрдВ рдЕрдкрдиреА рдорджрдж рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдореИрдВ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред
рдУрд╣ рдФрд░ рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ # 6896 рдХреЙрд▓рдо рдлреБрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ред
рдзрдиреНрдпрд╡рд╛рджред
@kaanozcan рдореИрдВрдиреЗ рдорд╛рд░реНрдЪ рдореЗрдВ рд╡рд╛рдкрд╕ рдЙрд╕реА рд╡рд┐рдЪрд╛рд░ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИ, рдХреЛрд░ рдЯреАрдо рдиреЗ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛, рдлрд┐рд░ рдпрд╣ рд╡рд╛рдкрд╕ рдорд┐рд▓ рдЧрдпрд╛ред рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк "рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреЗрдВ" рдкрде рд▓реЗрдВред
@kaanozcan рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ https://codesandbox.io/s/xjpkx9rzzw рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
@yesmeck рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред
рдореВрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рдХрд╛рд░рдг рдмрдВрдж рд╣реЛрдиреЗ рд╕реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
@yesmeck рд╣рдореЗрдВ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдбреЗрдореЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
https://codesandbox.io/s/xjpkx9rzzw
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ .. рддреЛ рдЕрдВрддрд┐рдо рд░рд╛рд╢рд┐ рдирд╡реАрдирддрдо рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдпрд╣ рдЕрдВрддрд┐рдо рд░рд┐рдлреНрд░реЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рд╣реЛред
@yesmeck рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ ... рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
const data = [
{
key: "1",
name: "John Brown",
age: 30,
address: "New York No. 1 Lake Park",
},
{
key: "2",
name: "Jim Green",
age: 20,
address: "London No. 1 Lake Park",
},
{
key: "3",
name: "Joe Black",
age: Math.random() * 20,
address: "Sidney No. 1 Lake Park",
},
];
рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЗ рд░реВрдк рдореЗрдВ ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд┐рдо рдпреЛрдЧ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
@yesmeck https://codesandbox.io/s/xjpkx9rzzw рдЗрд╕ рдбреЗрдореЛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрдм рдЖрдк рддрдп рдХреЗ рдмрд╛рдПрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢реИрд▓реА рдЧрдбрд╝рдмрдбрд╝ рд╣реИ
рдореИрдВ рдЗрд╕реЗ рдШрдЯрдХ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ
export default class extends PureComponent {
constructor(props) {
super(props);
this.state = {
localData: props.data,
};
this.tableRef = React.createRef();
}
handleTableUpdate = () => {
this.setState({ localData: this.tableRef.current.getLocalData() });
}
render() {
return (
<Table
ref={this.tableRef}
columns={this.props.columns}
dataSource={this.props.data}
onChange={this.handleTableUpdate}
components={{
body: {
wrapper: (props) => (
<BodyWithSummary
columns={this.props.columns}
data={this.state.localData}
{...props}
/>
),
},
}}
/>
);
}
}
function BodyWithSummary(props) {
const { data, columns, ...otherProps } = props;
return (
<tbody {...otherProps}>
<React.Fragment>
{data && data.length > 0 && (
<tr>
{props.columns.map((col) => renderColumn(col, data))}
</tr>
)}
{props.children}
</React.Fragment>
</tbody>
);
}
рдХрд╖реНрдЯрдкреНрд░рдж рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рд╕рдордЧреНрд░ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getLocalData
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдмреЙрдбреА рд░реИрдкрд░ рдХреЛ рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдмрд▓ рд░реЗрдлрд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдпрд╛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ (рдкреНрд░реЙрдкрд░.рдЪрд┐рд▓реНрдбреНрд░реЗрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдХреБрд▓рд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ)
рдХреНрдпрд╛ рд╣рдо footer
рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд div рдХреЗ рдмрдЬрд╛рдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрднрд╛рд▓рд╛:
.ant-table-footer {
padding: 0;
}
footer={(currentPageData)=>{
return (
<Row style={{marginRight:17}}>
<Col span={4} className="brd">
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>хРИшоб</Card>
</Col>
<Col span={4} className="brd">
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>123456789</Card>
</Col>
<Col span={4} className="brd">
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>123456789</Card>
</Col>
<Col span={4} className="brd">
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>123456789</Card>
</Col>
<Col span={4} className="brd">
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>123456789</Card>
</Col>
<Col span={4}>
<Card bordered={false} className="bgfb" bodyStyle={{padding:'10px 15px'}}>123456789</Card>
</Col>
</Row>
);
}}
рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
рдЬрд▓реНрдж рд╣реА рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдкреИрд░ рдХреЗ рдЖрдЧреЗ рдУ (тИй_ O) рд╣реЗ
@ybning рдХреНрдпрд╛ рдЖрдкрдХреЛ рдлрд┐рдХреНрд╕реНрдб рдХреЙрд▓рдо рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред ред
@yesmeck рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдЧрдгрдирд╛ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ: https://codesandbox.io/s/rrpo02qwkk
рдкреГрд╖реНрда 2 рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ рдлрд┐рд░ рдкреГрд╖реНрда 1 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрджреНрдпрддрди?
@linrf рдирд╣реАрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВред
https://codepen.io/chaegumi/pen/OaqxVd
рдХреНрдпрд╛ рд╣рдо рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдБрдХрдбрд╝реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП total
рдкреНрд░реЙрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?
total
footer
рд╕рд╛рде рдЕрд▓рдЧ рд╣реИ,
рд╕реНрддрдВрдн рдбреЗрдЯрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ reduce
рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдХреБрд▓ рдХреЛ рдХреЙрд▓рдо рдореЗрдВ рд░рдЦрд╛
Atd рдХреА рддрд╛рд▓рд┐рдХрд╛ рдкрд╛рдж рд▓реЗрдЦ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реА рдирд┐рд╢реНрдЪрд┐рдд рдХреЙрд▓рдо рд╣реЛрддреЗ рд╣реИрдВред
рдЖрдк рдЗрд╕реЗ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рдиреАрдЪреЗ рдХреЗ рдкрд╛рдж рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕реНрдЯрд╛рдЗрд▓ рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде, рддрд╛рд▓рд┐рдХрд╛ рдкрд╛рдж рд▓реЗрдЦ рдХреА рдереНрд░реЗрдб рдФрд░ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдХреЛ рдЫрд┐рдкрд╛рдПрдВред рдЕрдВрдд рдореЗрдВ, рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкрджреЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JS рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред
рдЕрд╡рдпрд╡:
import React, { PureComponent } from 'react';
import { Table } from 'antd';
import styles from './index.less';
export default class ChartTable extends PureComponent {
constructor(props) {
super(props);
this.refBox = React.createRef();
}
componentDidMount() {
const tableList = Array.from(this.refBox.current.querySelectorAll('.ant-table-body'));
this.tableList = tableList;
tableList.forEach((table) => {
table.addEventListener('scroll', this.handleTableScroll);
});
}
componentWillUnmount() {
this.tableList.forEach((table) => {
table.removeEventListener('scroll', this.handleTableScroll);
});
}
handleTableScroll = (e) => {
const current = e.currentTarget;
this.tableList.forEach((table) => {
if (table !== current && table.scrollLeft !== current.scrollLeft) {
table.scrollLeft = current.scrollLeft;
}
});
}
renderFooterTable = () => {
const { columns, dataSource } = this.props;
const dataList = [{
department: 'хРИшоб',
}];
return (
<Table
className={styles.footerTable}
pagination={false}
scroll={{ x: 'max-content' }}
size="small"
columns={columns}
dataSource={dataList}
/>
);
}
render() {
return (
<div ref={this.refBox}>
<Table
className={styles.mainTable}
pagination={false}
scroll={{ x: 'max-content', y: 350 }}
size="small"
columns={this.props.columns}
dataSource={this.props.dataSource}
/>
{this.renderFooterTable()}
</div>
);
}
}
рд╢реИрд▓реА рдХрд╡рд░реЗрдЬ рдлрд╝рд╛рдЗрд▓:
mainTable {
:global {
.ant-table-body::-webkit-scrollbar {
display: none;
}
}
}
.footerTable {
border-top: 1px solid #e8e8e8;
:global {
thead {
display: none;
}
}
}
+1 рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдХреЙрд▓рдо рдПрдХрддреНрд░реАрдХрд░рдг рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рдпрд╣ рдШрдЯрдХ рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
const __Table = (totalsRow = initTotals(), key='tableKey') => ({
className,
style,
children
}) => (
<table className={className} style={style} key={key}>
{children}
<tfoot>
<tr>
// add tfoot td here
</tr>
</tfoot>
</table>
);
const TableWithTFoot = ({allData, columns}) =>
<Table
dataSource={allData.data}
columns={columns}
pagination={false}
components={{ table: __Table(allData.totals) }}
/>
@rororofff рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ $ 5.00 рдХрд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИред
@piuccio рдЖрдкрдХреА рд╕реЛрдЪ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрддрд╛ рд╣реВрдВред
https://github.com/Arweil/antd-ext/blob/master/src/TableExt/TableExt.tsx
https://github.com/ant-design/ant-design/issues/5710#issuecomment -450855438
this.refBox = React.createRef();
рдореИрдВ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдХреЛрдб рд╡рд┐рдлрд▓ рд╣реИред
"atd": "2.13.14", "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "15.4.0", "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреЛрдо": "4.4.1"
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢
Uncaught TypeError: _react2.default.createRef is not a function
at new EstimationReport (psReport.js?18c1:47)
at eval (ReactCompositeComponent.js?063f:295)
at measureLifeCyclePerf (ReactCompositeComponent.js?063f:75)
at
@carvendy react
рдЖрдпрд╛рдд рдХрд░рдиреЗ рдкрд░ рд╕рдВрднрд╡рддрдГ рдпрд╣ рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓- рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред рдмрджрд▓рд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ
import from 'react';
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ:
import * as react from 'react'
рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдХ рдмрдирд╛рдпрд╛,
рдкрд╛рдж рд▓реЗрдЦ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдо рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
import React from 'react';
class TableFooter extends React.Component {
render() {
const { dataSource, columns } = this.props;
return (
<table className="ant-table">
<colgroup>
{columns.map((colModel, index) => {
return <col style={{
width: colModel.width,
minWidth: colModel.width
}} key={index} />
})}
</colgroup>
<tfoot >
<tr >
{columns.map((colum, idxCol) => {
return <td style={{ padding: "0px 8px" }} className={colum.className} key={idxCol}>
<strong>
{colum.footerContent ? colum.footerContent : (colum.footerSum ? dataSource.reduce((sum, record) => sum + parseFloat(record[colum.key]), 0) : "")}
</strong>
</td>
})}
</tr>
</tfoot>
</table>
)
}
}
export default TableFooter;
рдкреЗрдЬ рдХреЙрд▓
...
render() {
const columns = [
{
key: 'productName'
footerContent: 'SUM:',
},
{
key: 'quantity',
footerSum: true,
}
}
];
return (
<Table
columns={columns}
dataSource={dataSource}
footer={()=> {
return (
<TableFooter dataSource={dataSource} columns={columns} />
)
}
}
/>
)
....
var data = this.getLocalData ();
var рдХрд░рдВрдЯ;
var рдкреЗрдЬрд╕рд╛рдЗрдЬрд╝;
var рд░рд╛рдЬреНрдп = this.state; // рдпрджрд┐ рдХреЛрдИ рдкреЗрдЬрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ
if (!this.hasPagination()) {
pageSize = Number.MAX_VALUE;
current = 1;
} else {
pageSize = state.pagination.pageSize;
current = this.getMaxCurrent(state.pagination.total || data.length);
} // хИЖщб╡
// ---
// х╜УцХ░цНощЗПх░Сф║ОчнЙф║ОцпПщб╡цХ░щЗПцЧ╢я╝МчЫ┤цОешо╛ч╜оцХ░цНо
// хРжхИЩш┐ЫшбМшп╗хПЦхИЖщб╡цХ░цНо
if (data.length > pageSize || pageSize === Number.MAX_VALUE) {
data = data.filter(function (_, i) {
return i >= (current - 1) * pageSize && i < current * pageSize;
});
}
return data;
}
рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реВрдЪреА рдорд╛рдиреЛрдВ рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╕рдордп рдХреБрд▓ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреГрд╖реНрда рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ @sorrycc рдХреЛ рдкреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2 рд╕рд╛рд▓ рдмрд╛рдж, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред
2 рд╕рд╛рд▓ рдмрд╛рдж, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред
рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЧреИрд░-рдкреГрд╖реНрдард╛рдВрдХрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЙрд▓ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд░реЗрдВрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
рд▓реЗрдХрд┐рди рдкреГрд╖реНрдард╛рдВрдХрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ рдорд╛рд░ рдбрд╛рд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Https://github.com/ant-design/ant-design/blob/fee5e291632cce131611dd1a9e2ab89e02ee43a3/components/table/Table.tsx#L407
рдореИрдВ рдкреАрдЖрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдореЗрд░реЗ рдмреЙрд╕ @ afc163 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...
2 рд╕рд╛рд▓ рдмрд╛рдж, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред
рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдирдИ рддрд╛рд▓рд┐рдХрд╛ред рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ
https://github.com/ant-design/ant-design/issues/16911#issuecomment -523323460
@ alexchen1875 рдиреЗ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
@ alexchen1875 рдиреЗ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рддрд╛рд▓рд┐рдХрд╛ рдЕрдиреБрднрд╛рдЧ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝реЗрдВред
@ alexchen1875 рдХрдорд╛рд▓!
рдореИрдВ рдПрдХ PR рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ https://github.com/ant-design/ant-design/blob/61e319b66826530a1882cca41862a15d57b120a/comports/table/tsable.tsx рдХреЛ рд╕реНрдХрд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рд░рд╛ рдЬреЛрдбрд╝реЗрдВ "рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░реЙрдк рдбреЗрдЯрд╛ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВ"ред https://github.com/ant-design/ant-design/issues/5710#issuecomment -524164125 рдкреЗрдЬрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЯреАрдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧреА ...
рдореИрдВрдиреЗ рдЗрд╕ рдбреЗрдореЛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛,
рдлрд┐рдХреНрд╕реНрдб рдХреЙрд▓рдо , рд╣реЗрдбрд░ рдЧреНрд░реБрдкрд┐рдВрдЧ , рд╕реЗрд▓ рдорд░реНрдЬрд┐рдВрдЧ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди,
рдореИрдВ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ \
Address рдирдпрд╛ рдбреЗрдореЛ рдкрддрд╛
рдЙрдкрдпреЛрдЧ:
const calcRow = [
{
colspan: 2,
render: () => 'total'
},
{
render: sum => sum('age')
},
{
render: sum => sum('score')
}
]
atd v4 рдиреЗ рдЯреЗрдмрд▓ summary
рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛: https://github.com/ant-design/ant-design/issues/21656
https://ant.design/compenders/table/#compenders -table-Demo-рд╕рд╛рд░рд╛рдВрд╢
atd v4 рдиреЗ рдЯреЗрдмрд▓
summary
: # 21656 рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛https://ant.design/compenders/table/#compenders -table-Demo-рд╕рд╛рд░рд╛рдВрд╢
atd4 рд╕рд╛рд░рд╛рдВрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рд░рд╛рдВрд╢ рдХреЛ рдЕрднреА рднреА рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдкреНрд░рднрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд╣реИ рдФрд░ atd4 рдХреЗ рдореВрд▓ рдЗрд░рд╛рджреЗ рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдп рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдЕрдиреБрдХреВрд▓ рдЕрдиреБрднрд╡ рд╕рд╛рд░рд╛рдВрд╢ рдХреЛ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд╣реА , рддрд╛рдХрд┐ рдХреЛрдб рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдПрдХреАрдХреГрдд рд╣реЛ рдЬрд╛рдПред рдХрдИ рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдп рд╡рд░реНрддрдорд╛рди рд╕рд╛рд░рд╛рдВрд╢ рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╢рд╛рдпрдж рд╣рдо
footer
рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рдЯреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?