您应该查看两者的生命周期、它们的执行方式以及调用每个方法的顺序。componentWillMount
查看下面的反应生命周期图像,您可以看到andcomponentDidMount
和其他人之间的区别componentDidUpdate
,componentWillUpdate
等等......
此外,您应该推理何时使用每种方法
要更新您调用的状态this.setState()
,它会告诉反应某些东西已经改变,它将重新渲染组件树。如果你使用this.state.data = something
react 不会触发 render()。现在要更新 props,您需要了解 render() 的实际工作原理。这个答案已经从现有的anwser中总结出来:
每次调用 render() 时,react 都会创建一个新的虚拟 DOM,其中根节点是调用其渲染函数的组件。当组件或其任何子组件的状态或道具发生变化时,将调用 render() 函数。render() 函数从根开始销毁所有旧的虚拟 DOM 节点,并创建一个全新的虚拟 DOM。
为了确保组件的重新渲染顺畅高效,React 使用 Diffing 算法将创建新树所需的时间减少到 O(n) 的时间复杂度,通常复制树的时间复杂度 > O (n^2)。它实现这一点的方法是在 DOM 中的每个元素上使用“key”属性。React 知道,它可以检查 DOM 中每个节点上的“key”属性,而不是从头开始创建每个元素。这就是为什么如果你没有设置每个元素的“key”属性你会得到一个警告,React 使用这些键来极大地提高它的渲染速度。
反应生命周期
Redux 生命周期