反应钩子可以完全取代 redux 吗?



我正在学习反应钩子,到目前为止,我已经看到这是一种使反应"反应"响应"的方法,这在这个很酷的新事物之前是没有的。

我还尝试使用钩子在不同组件之间共享状态,当一个组件更改状态中的任何值时,其他组件会获得更新。所以这让我想到,Redux 或任何其他状态管理解决方案可以完全被 react 钩子取代吗?有什么优点和缺点吗?

在尝试将基于 redux 的应用程序迁移到钩子之前,我应该考虑什么?我不是大型第三方库的粉丝,如果我可以使用 react 可以提供的工具实现相同的目标,为什么不呢?

如果你使用redux 只是基于避免道具钻孔的需要,那么反应上下文(是否使用钩子(对你来说就足够了。

但要回答你的问题:不。您可以完全仅使用上下文和钩子来实现您的dispatch actionget state版本,而无需 redux,但 redux 提供的比它们更多。中间件、持久化应用状态的能力、更轻松的调试等。

如果你的应用不需要 redux 可以提供的所有好处,那么不要使用它。但是"上下文+钩子可以取代redux吗?">的说法是错误的。

我发现这种模式可以复制我的 redux 用例(下面的代码(。

这个想法是,setValue函数使用带有值的参数触发事件,事件处理程序更新钩子内部状态。

import { useState, useEffect } from 'react'
export function useValue(name, initial) {
const [value, _setValue] = useState(initial)
function setValue(value) {
const evt = new CustomEvent(name, {detail: {value}})
window.document.dispatchEvent(evt)
}
useEffect(() => {
function handleEvent (evt) {
_setValue(evt.detail.value)
evt.stopPropagation()
}
window.document.addEventListener(name, handleEvent)
return () => {
window.document.removeEventListener(name, handleEvent)
}
}, [])
return [value, setValue]
}

相关内容

  • 没有找到相关文章

最新更新