C D*_*C D 11 reactjs react-hooks
我正在尝试构建一个应用程序,但问题是当我更改状态时,所有组件都会重新渲染。
const App=()=>{
const [showMenu,setshowMenu]=useState(false)
return(
<>
<Header showMenu={showMenu} setShowMenu={setShowMenu}/>
<MainArea/>
{showMenu ? <Menu/> : null}
<Footer/>
</>
)
}
Run Code Online (Sandbox Code Playgroud)
当我通过按钮将 showMenu 设置为 true 时,会出现一个菜单,但问题是我的所有组件(页眉、主区域、页脚)都会重新渲染。我不想要这样。我怎么解决这个问题?
Mil*_*a A 15
它可以防止特定的 jsx 内容重新呈现,即使这些 jsx 内容/组件使用的状态已更新。
const App=()=>{
// you can only memoize parts that do not require use of the updated variable in this case. It means that Header cannot be memoized.
const mainArea = React.useMemo( () => <MainArea/>, [] );
const footer = React.useMemo( () => <Footer/>, [] );
const [showMenu,setShowMenu]=useState(false)
return(
<>
<Header showMenu={showMenu} setShowMenu={setShowMenu}/>
{mainArea}
{showMenu ? <Menu/> : null}
{footer}
</>
)
}
Run Code Online (Sandbox Code Playgroud)
真的需要showMenu的状态吗?或者我们只能将setShowMenu传递给它?如果是这样,那么您还可以将 Header 组件记忆到备忘录块中,如下所示:
const header = React.useMemo( () => , [] );
| 归档时间: |
|
| 查看次数: |
33464 次 |
| 最近记录: |