setState
и функция, возвращаемая useState
, принимает два типа аргументов:
- Вы можете установить значение непосредственно для него.
- Вы можете передать ему функцию, которую они вызовут с предыдущим состоянием в качестве аргумента.
В версии функции вы импортировали функцию Split
и использовали ее в:
setSplit(Split);
Обратите внимание, что Split
здесь - это функция, и что применимо, это вторая версия setState
. Это вызвало бы функцию непосредственно вместо того, чтобы сохранить функцию как компонент. Если компонент вызывается с помощью ()
, тип <Split />
недопустим (поскольку React больше не может вызывать его, это не функция)
Чтобы обойти это, вы можете сохранить Split
какобъект, как в случае с компонентом класса.
const [split, setSplit] = useState(null);
const handleClick = () => {
import("./Split").then(({ default: Split }) => {
setSplit({ Split });
});
};
const Split = split ? split.Split : null;
Теперь setSplit
видит объект в качестве аргумента и устанавливает его напрямую.
Codesandbox