-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
精读《一种 Hooks 数据流管理方案》 #345
Comments
有些疑惑,文章中的 |
有些疑惑,文章中的 |
对,所以没有用 Immutable,而是 Static。 |
两种更新途径:
<Provider dynamicValue={{ color: props.color }} />
const { useState: useDesigner, Provider } = createHookStore<{
dynamicValue: { color: string }
}>(({ setState }) => {
const myCallback = useCallback(() => {
setState(state => ({
...state,
color: 'red'
}))
}, [setState])
return useMemo(() => ({
myCallback
}), [myCallback])
})
function App() {
const { myCallback } = useDesigner()
// 在某个回调里执行 myCallback()
} 这个和第一点不冲突,如果外部 <Provider defaultDynamicValue={{ color: props.color }} /> |
很好奇 createHookStore 的类型定义是怎么写的,尤其是自定义 hook 依赖了 dynamic 和 static 之后的返回值类型 |
这是个难点,不过只要灵活使用泛型推导就行啦。 |
基于 Hooks 的数据流很方便,但跨组件 props 传递如果仅一层层透传,会造成大量模版代码,随之而来的是维护成本不断升高。
React.useContext 是一种跨组件数据传递方案,但可惜无法做到按需更新,即有一个变量改变,所有使用了 useContext 的组件都会重渲染。为解决这个问题,可以把 useContext 粒度拆碎,但应用存在几十个 context 显然也增加了维护成本,还有一种方案是 use-context-selector,一定程度解决了问题,但有一些 局限。
今天笔者介绍一种新的数据流管理方案,利用 react-redux 更彻底的解决组件作用域内的状态管理问题。
精读《一种 Hooks 数据流管理方案》
The text was updated successfully, but these errors were encountered: