一定不要一层一层传,根本难以维护,更没有意义,这么多层写出来的一定是冗余代码。
想要在 Grid 和 Page 之间状态共享,使用 zustand / jotai / redux 这种全局状态库就行了,写出来代码都差不多(这里以 jotai 为例):
// 定义 atom
export const dataAtom = atom('')
// Grid ,想要使用 `data` 或 设置 `data` 值都可以
const [data, setDataA] = useAtom(dataAtom)
// 同理在 Page 也是一样的:
const [data, setDataA] = useAtom(dataAtom)
这样写,省去了一层一层的 props ,代码简单多了。更重要的是:你只要知道你在组件里需要什么 atom ,然后使用就行了,没有心智负担。hook 本来就是干这事的。
另外,这样的需求,不建议使用 context 。实际上,我在任何情况下都不建议别人使用 context 来做业务代码,context 最常见的是场景其实是封装组件。 |