After implementing hook_node_access, how to stop node from appearing in view?
having run into the same problem as you I hope I can save you a headache.
Depending on the amount of results you have I can provide 2 ways to tackle this:

1. Works when you don't need pagination

HOOK_views_post_execute. This will have the rows in the variable. In here you can check the access and unset() the rows not allowed.

2. Works when you need pagination

HOOK_views_query_alter. I've used this solution for a view I needed myself with around 10000 results. I do a custom permissions check based on the user and the groups they are part of. Baed on this I generate a list of ID's of nodes they user is allowed to see. I add these ID's as an "IN" query to the view:

$cond["field"] = "media_field_data.mid";
$cond["operator"] = "IN";
$query-&gt;addWhere('1', $cond["field"], $mids, $cond["operator"]);


Where $mids has all the allowed Mids in there.
Hope this helps you get along!