Как обновить данные MUI при нажатии кнопки обновить на панели инструментов

#javascript #reactjs

Вопрос:

Я новичок в реагировании и не совсем понимаю поток компонентов и реквизита.

Как обновить данные, доступные для MUI, при нажатии кнопки обновить в панели инструментов?? Я создал кнопку обновления в пользовательской панели DataTable и хочу обновить данные в DataTable.

Вот мой код CustomToolBar

   const defaultToolbarStyles = {
  iconButton: {
  },
};

class CustomToolbar extends React.Component {
  
  handleClick = () => {
    console.log("clicked on refresh button!");
  }

  render() {
    const { classes } = this.props;

    return (
      <React.Fragment>
        <Tooltip title={"custom icon"}>
          <IconButton className={classes.iconButton} onClick={this.handleClick}>
            <Refresh className={classes.deleteIcon} />
          </IconButton>
        </Tooltip>
        
      </React.Fragment>
      
    );
  }

}

export default withStyles(defaultToolbarStyles, { name: "CustomToolbar" })(CustomToolbar);
 

И вот мой клиент.код jsx

 const clients = () => {
    const [isAlive, setIsAlive] = useState(true)
    const [userList, setUserList] = useState([])
    const columns = [
    {
        name: 'id', 
        label: 'Client Id',
        options: {
            display: false,
        },
    },
    {
        name: 'lastname',
        label: 'Client Name',
        options: {
            setCellProps: () => ({ style: { minwidth: '300px',  maxWidth: '500px', padding: '0px'}}),
            filter: true,
        },
    },
    {
        name: 'comment',
        label: 'Comment',
        options: {
           display: false,
        },
    },
    {
        label: "Actions",
        name: "name",
        options: {
            setCellProps: () => ({ style: { minwidth: "300px",  maxWidth: "400px", padding: '0px'}}),
            customBodyRender: (value, tableMeta, updateValue) => {
                
                return (
                    <Fragment>
                        {/* console.log(tableMeta.rowData) */}
                        {tableMeta.rowData !== undefined ?  <LeadDetails style={{border: '0px',  backgroundColor: 'white'}} leads = {tableMeta.rowData} /> : null}
                        {tableMeta.rowData[0] !== undefined ?  <AgentDialog style={{border: '0px',  backgroundColor: 'white'}} client_id = {tableMeta.rowData[0]} /> : null}
                    </Fragment>  
                
                )
            }
        }
    },
    ]

    useEffect(() => {
        Axios.get(clients_url).then(({ data }) => {
        console.log(data.data)
        if (isAlive) 
        {
            setUserList(data.data)
        }
        })
        return () => setIsAlive(false)
    }, [isAlive])
    return (
        <div className="m-sm-30">
            <div className="mb-sm-30">
                <Breadcrumb
                    routeSegments={[
                        { name: 'Clients Data', path: '/pages' },
                        { name: 'Clients' },
                    ]}
                />
            </div>
            <MUIDataTable
                title={'Clients'}
                // title={<div><button>Click Here</button>Leads Report</div>}
                data={userList}
                columns={columns}
                options={{
                    selectableRows: false, // set checkbox for each row
                    elevation: 0,
                    rowsPerPage: 10,
                    rowsPerPageOptions: [10, 20, 40, 80, 100],
                        customToolbar: () => {
                            return (
                              <CustomToolbar />
                            );
                          }
                    }}
            />
        </div>
    )
}
export default clients