Match Param доступен для GroupRoute только после его рендеринга с помощью Route, и он также не будет напрямую доступен в компоненте GroupRoute.
Также вы должны отметить, что вы пытаетесь написать асинхронный c код непосредственно в рендере, что неверно.
Одним из решений является запись этого logi c во внутреннем компонент, отображаемый на маршруте, как показано ниже
const GroupRouteInner = ({RouteComponent, match, history, ...rest}) => {
const {currentUser} = useContext(AuthContext);
const [loading, setLoading] = true;
const groupID = match.params.id;
let members = [];
useEffect(() => {
const groupRef = db.collection('Groups').doc(groupID)
groupRef.get().then(snapshot => {
let data = snapshot.data()
let temp = data.groupMembers
temp.forEach(element => {
members.push(element.uid)
})
let validRoute = validRoute = members.includes(currentUser.uid);
if(!validRoute) {
history.push('/UserDash');
}
setLoading(false);
})
}, [groupID])
if(loading) return <div>Loading...</div>
return <RouteComponent match={match} history={history} {...rest} />
}
export const GroupRoute = ({component: RouteComponent, ...rest}) => {
return (
<Route
{...rest}
component={(rProps) => <GroupRouteInner {...rProps} RouteComponent={RouteComponent}/>}
/>
)
}