React hook中 对于useState为什么会采用替换的策略?

在看到公司架构师写的一篇文章里提到了:
class组件对于state的处理策略是 合并,而hooks中的策略就变成了 替换
因为文章中没有给出很好的解释,我在论坛上也没有看到太多的讨论,所以提问。
为什么hooks的state的策略是替换?
🌰:

    class APP extend Component {
        constructor() {
            this.steState({})
        }
    }
    
    const App = () => {
        const [state, setState] = useState({})
        useEffect(() => {
            setState({})
        }, [])
    }
阅读 3.2k
2 个回答

关注一下,我觉得对使用者来说是一样的操作,保证纯净

新手上路,请多包涵

对于 state hook 而言,state 是放在数组里,setState 就是修改数组中的元素。对于 class component 而言,setState 将 nextState 与 prevState 浅合并,最终得到的就是 newState。

关于 class component 的 setState 的问题,我得印象中官方文档写的很清楚了。可以参考以下官方文档。

关于 state hook 如何 setState,官方文档好像没有。所以你可以看看这篇文章(看过了就忽略哈):
https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e

如果觉得上面这篇文章还不够透彻,就看看 Dan 的这篇文章:
https://overreacted.io/why-do-hooks-rely-on-call-order/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题