[react] 如何解决引用类型在pureComponent下修改值的时候,页面不渲染的问题?
Posted 前端小歌谣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[react] 如何解决引用类型在pureComponent下修改值的时候,页面不渲染的问题?相关的知识,希望对你有一定的参考价值。
使用immutable对象
import React from 'react';
class PComponent extends React.PureComponent {
render() {
const { name, age } = this.props.person;
return <>
<p>NAME: {name}</p>
<p>AGE: {age}</p>
</>
}
}
class Demo extends React.Component {
state = {
person: {
name: 'vk',
age: 1,
}
}
doChange = () => {
const { person } = this.state;
// 这种情况下,person的引用地址没有变化,diff前后浅比较相等,所以并没有引起PComponent变化
// 如果PComponent是继承自React.Component,因为父组件的render导致了子组件也render了,是会产生变化的
// person.name = 'vk2';
// this.setState({ person })
// 正确的写法
this.setState({
person: {
...person,
name: 'vk2',
}
});
}
render() {
const { person } = this.state;
return <>
<button onClick={this.doChange}>Change</button>
<PComponent person={person} />
</>
}
}
export default Demo;
个人简介
我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论
主目录
以上是关于[react] 如何解决引用类型在pureComponent下修改值的时候,页面不渲染的问题?的主要内容,如果未能解决你的问题,请参考以下文章
[react] 如何解决引用类型在pureComponent下修改值的时候,页面不渲染的问题?
如何使用 Typescript 在 React 中定义 <video> 引用的类型?