参考链接:
https://www.jianshu.com/p/d62bbb598360
我的问题出在哪里呢?
第一条,我的子组件并没有直接使用props,而是先把props转换为子组件的state,然后使用了state,因此导致了子组件不更新。
为什么?react关于state的规定,就是说state是本组件自己产生和管理的状态,props得来的数据并不是自己的,不适合作为state进行管理,因此需要用到props,直接使用即可,不需要画蛇添足,将它再转换为state
今天在写代码时,发现父组件中的state更新了,传递给子组件,但是子组件并没有更新,带着疑惑,上网查了查,发现了问题所在。先看看网上怎么说的:参考链接:https://www.jianshu.com/p/d62bbb598360我的问题出在哪里呢?第一条,我的子组件并没有直接使用props,而是先把props转换为子组件的state,然后使用了state,因此导致了子组件不更新。为什么?react关于state的规定,就是说state是本组件自己产生和管理的状态,props得来的数.
主要问题是 父
组件
通过props 传值后
子
组件
不会重新
渲染
<MetalTypeInfo id={this.state.id} /> //id 修改后不会重新
渲染
<MetalTypeInfo>
构造方法接收props 放入state中
constructor(props: defaultProps) {
super(props);
this.state = {
data: [], // 数据
Read/index.
js
x父
组件
import
React
, { useState } from '
react
';
import List from './components/List';
import Card from './components/Card';
import './index.scss';
export default function Read(pros) {
console.lo
在
React
中,当父
组件
重新
渲染
时,
子
组件
也可能会重新
渲染
。这是因为
React
中的
组件
树是由父
组件
和
子
组件
组成的。当父
组件
重新
渲染
时,
React
会比较新旧虚拟 DOM 树之间的差异,找出需要更新的节点,然后重新
渲染
这些节点,包括
子
组件
中的节点。如果
子
组件
的 props 或 state 发生了改变,也会触发
子
组件
重新
渲染
。
但是,
React
会尽量减少不必要的重新
渲染
,即使父
组件
重新
渲染
了,如果它的 props 和 state 没有变化,
子
组件
也不会重新
渲染
。同时,可以通过使用
React
.memo 或 shouldComponentUpdate 生命周期钩
子
函数来避免不必要的
子
组件
重新
渲染
。
Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside com