Документы React дают понять, что условный вызов хуков не будет работать. Исходная презентация хуков React была вызвана тем, что React использует порядок, который вы называете хуками, для введения правильного значения.
Я понимаю это, но теперь мой вопрос заключается в том, можно ли рано возвращаться из компонента функции с крючками.
Так что-то вроде этого разрешено:
import React from 'react';
import { useRouter, Redirect } from 'react-router';
import { useSelector } from 'react-redux';
export default function Component() {
const { match } = useRouter({ path: '/:some/:thing' });
if (!match) return <Redirect to="/" />;
const { some, thing } = match.params;
const state = useSelector(stateSelector(some, thing));
return <Blah {...state} />;
}
Технически, ловушка useSelector
вызывается условно, однако порядок их вызова не меняется в зависимости от рендеринга (даже если возможно, что будет вызываться один меньший крючок).
Если это не разрешено, можете ли вы объяснить, почему это не разрешено, и предоставить общие альтернативные подходы к раннему возврату в компоненте функции с хуками?