在我的React应用程序(使用TypeScript)中,我想使用React hooks(特别是useState)来管理表单状态,并同时将其用作Mobx存储的可观察组件,但我遇到了以下错误:
Hook只能在函数组件体内调用。
因此,例如在以下组件中:
import * as React from "react";
import { inject, observer } from "mobx-react";
import { MyStore } from "./MyStore";
interface IProps {
myStore?: MyStore;
id: string;
}
const MyComponent: React.FC<IProps> = props => {
const [state, setState] = React.useState("");
return (
<div>
<h1>{props.id}</h1>
</div>
);
};
export default inject("myStore")(observer(MyComponent));
我看到了一个解决方案,但是那个方案使用了 React.createContext
导出 store 类。这不是 Mobx 和 Hooks 的旧方法吗?
以下是示例的 Sandbox:
mobx-react@5
不支持 hooks,但是版本6将支持它,目前正在使用rc.4
。 - TholleuseReducer
hook,并通过上下文共享状态对象和分派函数,这将适用于许多用例,但我认为它不会取代适用于中型应用的 MobX。这在很大程度上取决于您特定项目的情况。 - Tholle