Implementing refresh is entirely optional - if you omit it then the props of the Custom Header Component will get updated when changes occur This pattern is consistent with the refresh method of Cell Renderers. Its a great library to quickly prototype visually appealing web applications that interact with data and machine learning models in a fun way. // Gets called when a new Column Definition has been set for this header. The container where there is going to be an onClick mouse listener to trigger the sort. This is provided should you want to make changes to this cell, eg add ARIA tags, or add keyboard event listener (as focus goes here when navigating to the header). Here we go through some of the finer details. 'Max Temp' and 'Min Temp' columns uses the Function method to format each cell in the column with the same style. In case of sorting ascending the data in the column, this shows the associated icon. Now that we have the correct buttons rendering depending on whether the row is edited, we need to implement the click behavior of the Edit, Delete, Update and Cancel buttons. By default the grid will create the cell values using simple text. This is useful if you want to When you want to display the menu, call the params.showColumnMenu() callback. we need once the text is laid out vertically */, '