Kendo grids require a lot of custom code (to enable selecting, sorting, filtering, expanding) but you are not passing important props to custom components (also had a problem with missing prop here https://www.telerik.com/forums/kendo-grid-custom-cell-with-row-selection) because you are expecting that all the code is written in a single file and all functions/methods have access to everything. This is not true. I am sure that I am not the only one who have a shared "BasicGrid" component with selecting/sorting/filtering/grouping/expanding... implemented and reusing it across the app. In this case custom cell functions or column configs can be in a completely different part of the application than the grid. One example:
<BasicGrid data={data} groupable locale="en"> // if cellRender had an info about the format the groupable header "hack" could be hidden inside of the BasicGrid
<Column field=
"ProductID"
title=
"ID"
width=
"50px"
/>
<Column field=
"ProductName"
title=
"Product Name"
/>
<Column field=
"BooleanValue"
title=
"Boolean Value"
/>
<Column field=
"Date"
title=
"Date"
format=
"0:MMM dd, yyyy"
/> //one format
<Column field=
"Date2"
title=
"Date"
format=
"0: yyyy"
/> // different
</BasicGrid>
My point is that if you expect us to create custom code we should have all necessary data. Now we have to extract the data, save it to redux or context, share it between components, "watch" for data change and update shared state. This is adding unnecessary complexity.