带有钩子的功能性React组件不再是无状态组件。它可以具有状态,因此为功能组件定义状态接口是有意义的。
尽管打字稿不会对此引发任何错误/警告,但最好定义一下。
需要帮助。
答案 0 :(得分:0)
使用挂钩时,状态不存储在组件中,而是存储在组件上下文中的某个位置,并且可以在组件中访问该上下文。当您查看useState挂钩的签名时,它会说:
function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
所以这意味着您的状态是从其初始值推断出来的。如果您想变得非常明确,可以将泛型传递给该函数:
const [s, setS] = useState<{stateShape: StateShape}>({});
但是正如我所说的。组件仍然是无状态的,因为状态没有存储在组件中。