首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React函数组件防止重呈现

React函数组件防止重呈现
EN

Stack Overflow用户
提问于 2020-11-01 16:37:01
回答 1查看 2.6K关注 0票数 2

我有一个类反应组件,如果浏览器pathName是/exp,它使用函数钩子组件

当页面加载时,我的应用程序组件更改的状态大约是3-4次,

如果道具没有改变,如何防止示例钩子重新安装?

代码语言:javascript
复制
import React, { useState } from 'react';

 function Example() {
  console.log("i mounted")
  }

__

代码语言:javascript
复制
export default class App extends Component {
state={key:"value"}   <--------------------------------------MAIN APP STATE CHANGES 3 times
componentDidMount(){
//I change App state 3 times with conditional code 
}

 render() {
    return (
      <Router>
        <Switch>
        <Route path="/exp">
            <Example prop="I have not changed"  />  <-----------------PREVENT MULTIPLE MOUNTINGS
        </Route>
            </Switch>
         </Router>
         )
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 16:44:25

代码语言:javascript
复制
const Chat = React.memo(props => {
  console.log("Greeting Comp render");
  return <></>
});

export default Chat   
//This worked for me

您可以在道具更改时使用React.memo和呈现。

代码语言:javascript
复制
function MyComponent(props) {
  /* render using props */
}

function areEqual(prevProps, nextProps) {
  /*
  return true if passing nextProps to render would return
  the same result as passing prevProps to render,
  otherwise return false
  */
}
export default React.memo(MyComponent, areEqual);

应该更新组件 if类组件

代码语言:javascript
复制
shouldComponentUpdate(nextProps, nextState)

注意:此方法仅作为性能优化而存在。不要依赖它来“防止”渲染,因为这会导致错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64634261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档