index.jsx 1016B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React, { useState, useRef, useImperativeHandle } from 'react'
  2. import Search from '@/components/Search'
  3. import TableList from '@/components/TableList'
  4. export default React.forwardRef((props, ref) => {
  5. const tableRef = useRef()
  6. const searchRef = useRef()
  7. const [searchData, setSearchData] = useState({})
  8. const {api, searchFields, params, onPageChange,searchProps, ...leftProps} = props
  9. const handleSearch = (data) => setSearchData(data)
  10. useImperativeHandle(ref, () => ({
  11. reload: () => {
  12. if (tableRef.current) {
  13. tableRef.current.reload()
  14. }
  15. },
  16. getSearchData: searchData,
  17. }))
  18. return (
  19. <>
  20. <Search
  21. ref={searchRef}
  22. fields={searchFields}
  23. onSearch={handleSearch}
  24. onReset={handleSearch}
  25. searchProps={searchProps}
  26. />
  27. <TableList
  28. ref={tableRef}
  29. api={api}
  30. params={Object.assign(searchData, params||{})}
  31. {...leftProps}
  32. onPageChange={onPageChange}
  33. />
  34. </>
  35. )
  36. })