Cuando el componente principal de React pasa valores al componente secundario, el componente secundario no se procesa de inmediato

Cuando el componente principal de React pasa valores al componente secundario, el componente secundario no se procesa de inmediato

El problema encontrado en el proceso de desarrollo del proyecto es que algunos datos deben pasarse al subcomponente, pero el subcomponente no se procesará de inmediato y se determina que el valor es el más reciente a través de la impresión de la consola.

	1.传递的数据是一个对象,react是浅比较(比较两个对象在内存中的地址),只修改对象的属性,地址不变,
	所以react不渲染。解决方案:每次更新传入一个新的对象
	2.在异步函数中使用setState(),在执行一个函数时,react为了减少渲染次数,setState()无论更新了多少次,
	只在函数结束时触发渲染,普通函数按顺序执行,在函数结束时能正常触发渲染,而异步函数在函数结束时,触
	发渲染(异步操作还没结束,值尚未更新),异步完成操作后即使值更新了,页面也不渲染。
	解决方案:避免在异步函数中使用setState(),或者通过ref更新。使用 async await关键字,等待异步
	操作后再结束函数。
	3.在子组件中使用
		const [state,setState]=useState(props.state)
	-通过这串代码获得的数据,在子组件不会立马渲染,这串代码中的useState(props.state)只会在加载子组件赋值
	(即赋一个初始值,在这个组件的生命周期内,只能通过setState()修改state,所以传递的参数props.state更新了,
	也不会触发更新。
	-解决方案:直接使用props.state,不另外使用useState()接收。
	 或者通过以下代码更新
	const [state,setState]=useState()
	useEffect(()=>{
    
    
		setState(props.state)	
	},[props.state])

Supongo que te gusta

Origin blog.csdn.net/weixin_53457368/article/details/131634716
Recomendado
Clasificación