很多人学React,可能就是从"Hello World"开始,接着JSX、组件、state、props这么一路学下来。跟着官方文档或者教程敲一遍代码,基本功能都能实现。但一旦项目复杂起来,各种奇奇怪怪的问题就冒出来了:组件莫名奇妙地重渲染、状态更新不同步、Effect依赖地狱......这些问题,往往不是靠背几个API就能解决的。
核心:理解"心智模型"
React的精髓,其实不在于它的语法,而在于它希望我们用什么方式去思考。这套思考方式,就是所谓的"心智模型"。React的核心心智模型可以概括为:UI是状态的一个函数,即 UI = f(state)。给定相同的状态,你的UI渲染结果应该是确定的。这个理念听起来简单,但真正贯彻到开发中,需要思维的转变。
我们不再是命令式地操作DOM:"找到这个div,然后修改它的innerHTML"。而是声明式地描述:"在这个状态下,我的界面应该长成这样"。React负责根据你描述的状态,去计算出最终的界面该是什么样子,并高效地更新到DOM上。这种思维的转变,是理解React一切行为的基础。
渲染机制:不仅仅是Virtual DOM