【发布时间】:2021-09-29 13:24:03
【问题描述】:
当我运行这个主页组件时,它会渲染很多次。如何停止这种不必要的渲染。请帮我解决这个问题。由于我们在功能组件中没有 ShouldComponentUpdate ,如何处理这个问题。如果可能,请给我发送实时代码示例
const Home = (props) => {
const [conversations,setConversations]=useState([]);
const dispatch=useDispatch();
const auth=useSelector(state=>state.auth);
const conv=useSelector(state=>state.conversations);
console.log(auth);
useEffect(()=>{
dispatch(getConversations(auth.user._id));
setConversations(conv.conversations);
},[auth,conv]);
return(
<>
<Layout />
<div className="messenger">
<div className="chatMenu">
<div className="chatMenuWrapper">
<input placeholder="Search for friends" className="chatMenuInput"/>
{
conversations.map((c)=>{return <Conversations/>})
}
</div>
</div>
<div className="chatBox">
<div className="chatBoxWrapper">
<div className="chatBoxTop">
<Message/>
<Message own={true}/>
<Message/>
</div>
<div className="chatBoxBottom">
<textarea className="chatMessageInput" placeholder="write something">
</textarea>
<button className="chatSubmitButton">Send</button>
</div>
</div>
</div>
<div className="chatOnline">
<div className="chatOnlineWrapper">
<ChatOnline/>
</div>
</div>
</div>
</>
)
}
export default Home;
【问题讨论】:
-
getConversations修改conv? -
React 组件在其父树被重新渲染时重新渲染。此外,控制台登录功能体不能准确衡量组件何时重新呈现,请使用
useEffect。此组件重新渲染时是否存在问题或问题?你为什么要阻止渲染?如果您确实需要尝试防止渲染,可以使用memo HOC。 -
它没有造成任何问题,只是为了优化和应用程序的性能
-
一般来说,如果没有渲染问题,就不要过早优化。 React 开箱即用地进行了很好的优化。
标签: javascript reactjs react-redux react-hooks