Ant-design: рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  78рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ant-design/ant-design

рд╕рдВрд╕реНрдХрд░рдг

2.9.1

рд╡рд╛рддрд╛рд╡рд░рдг

рдмреНрд░рд╛рдЙрдЬрд╝рд░

рдкреНрд░рдЬрдирди рд▓рд┐рдВрдХ

http: // рдХреЛрдИ рднреА

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  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>
          )
        }}
      />
  1. dataSource рдкреНрд░реЛрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ
dataSource.push({id: 'цА╗шоб', price: '3000'})

рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ?

рдПрдХ рддрд╕реНрд╡реАрд░ рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

  1. footer рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди footer рдкреНрд░реЛрдк рдЯреЗрдмрд▓ рдЯреЗрдмрд▓ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред

  2. dataSource рдкреНрд░реЛрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рд▓рдВрдмрд╛рдИ pageSize рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Inactive IssueHuntFest тЭУFAQ ЁЯТб Feature Request

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

рд╢рд╛рдпрдж рд╣рдо footer рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рдЯреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдирдорд╕реНрдХрд╛рд░ @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

screen shot 2018-02-27 at 15 03 33

рд╡рд░реНрддрдорд╛рди Table[footer] рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рд╣реЛрдЧреАред

@hackape рдЖрдк рдПрдХ рдирдпрд╛ рдкреАрдЖрд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЬрд╝рд░реВрд░

https://codesandbox.io/s/m45r6o4nj8
рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд▓рд┐рдВрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ

@yesmeck рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдШрдЯрдХ / рддрд╛рд▓рд┐рдХрд╛ # 195 рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ, рдЕрдм рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛?

рджреЗрдЦрд╛ рдпрд╣ рд╡рд┐рд▓рдп it @yesmeck

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рд╛ред рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рддрдерд╛рдХрдерд┐рдд "рдкрд╛рдж рд▓реЗрдЦ" рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рддрд╛рд▓рд┐рдХрд╛ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЗ рдареАрдХ рдиреАрдЪреЗред

рдЙрджрд╛рд╣рд░рдг:
image

рдкреВрд░реЗ рд╕рдордп рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рдРрд╕рд╛ рд╕рд╛рдзрди рд╣реИ, рдЬреЛ рдПрдХ рд╢рдмреНрдж "рд╕рд╛рд░рд╛рдВрд╢ рдкрдВрдХреНрддрд┐" рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ, 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 рд╕реНрдХреНрд░реЙрд▓ рдПрдХреНрд╕ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╛рдж рд▓реЗрдЦ рдкрд░ рд╣реИред рдкрд╛рдж рдХреЗ рд╕рд╛рде рд╢рд░реАрд░ рдХреЛ рднреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

image

@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>

рдбрд┐рдЬрд╝рд╛рдЗрди:
screen shot 2018-05-30 at 17 07 38

рдЙрди рдкреВрд░реНрд╡-рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рд╕реЗ рдЙрди рдХрдХреНрд╖реЛрдВ рдореЗрдВ рдЕрди-рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдмреБрд░рд╛ рди рдорд╛рдиреЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдирдП рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЕрдЧрд░ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ 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 рдХреЗ рдмрдЬрд╛рдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрднрд╛рд▓рд╛:

20180927 0905

      .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

v7a kvx 5cig rjeo 696g
рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдХреБрд▓ рдХреЛ рдХреЙрд▓рдо рдореЗрдВ рд░рдЦрд╛

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 рд╕рд╛рд▓ рдмрд╛рдж, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред

рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЧреИрд░-рдкреГрд╖реНрдард╛рдВрдХрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЙрд▓ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд░реЗрдВрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

image

рд▓реЗрдХрд┐рди рдкреГрд╖реНрдард╛рдВрдХрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ рдорд╛рд░ рдбрд╛рд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 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')
    }
]

image

atd v4 рдиреЗ рдЯреЗрдмрд▓ summary рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛: https://github.com/ant-design/ant-design/issues/21656

image

https://ant.design/compenders/table/#compenders -table-Demo-рд╕рд╛рд░рд╛рдВрд╢

atd v4 рдиреЗ рдЯреЗрдмрд▓ summary : # 21656 рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛

image

https://ant.design/compenders/table/#compenders -table-Demo-рд╕рд╛рд░рд╛рдВрд╢

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

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдп рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдЕрдиреБрдХреВрд▓ рдЕрдиреБрднрд╡ рд╕рд╛рд░рд╛рдВрд╢ рдХреЛ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд╣реА , рддрд╛рдХрд┐ рдХреЛрдб рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдПрдХреАрдХреГрдд рд╣реЛ рдЬрд╛рдПред рдХрдИ рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдп рд╡рд░реНрддрдорд╛рди рд╕рд╛рд░рд╛рдВрд╢ рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

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

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

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

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

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