How to change view mode of view row using hook_views_pre_render? Is it possible to change the view mode of a view result in hook_views_pre_render?

For example I have 3 different view modes (teaser, teaser-full, teaser-short). The goal is to have the view repeat these 3 teaser templates in the view page/listing, but I'm firstly struggling to change the view mode at all. 

I tried the below, but it doesn't seem to do anything.

function themename_views_pre_render(ViewExecutable $view) {
  foreach ($view-&gt;result as $index =&gt; $row) {
    $view-&gt;row_index = $index;
    $view-&gt;rowPlugin-&gt;options['view_mode'] = 'teaser';
  }
}


Note: If I drop a breakpoint into the code, it is being hit. But still gets rendered out as default view mode.
I was able to change the view mode in the hook_views_pre_execute() hook. I believe _views_pre_render() is too late.

function custom_module_views_pre_execute(ViewExecutable $view) {
  // Some logic to determine view mode...

  $view-&gt;rowPlugin-&gt;options['view_mode'] = 'list';
}