【发布时间】:2025-11-25 12:05:01
【问题描述】:
这是我的反应钩子代码:
function Panel({children,title}){
var [count,set_count]=React.useState(0)
React.useEffect(_=>{
console.log(title,'mount')
return _x=>console.log(title,'unmount')
})
function onClick(){
set_count(count+10)
}
return <>{count}<button {...{onClick}}>up</button><div>{children}</div></>
}
function Tabs({children}){
var [selected,set_selected]=React.useState(children[0].key)
var tabs= children.map(x=>{
function onClick(){
set_selected(x.key)
}
var className=(selected==x.key)?'tab selected':'tab'
return <div {...{className,onClick,key:x.key}}>{x.props.title||x.key}</div>
})
var panel=children.find(x=>x.key==selected)
return <><div>{tabs}</div>{panel}</>
}
function TabsPage(){
return <Tabs>
<Panel key='the_tab1' title='The tab1 title'> tab1<b>rrr</b></Panel>
<Panel key='the_tab2' title='The tab2 title'> tab2</Panel>
</Tabs>
}
目标是使用反应钩子创建一个简单的带有任意内容的选项卡控件(称为面板)。该代码有效,除了每次用户更改活动选项卡时面板组件都会安装/卸载。结果面板状态重置。
我的问题:如何在更改选项卡时不重置状态?不使用 redux 等全局状态存储是否有可能?
【问题讨论】:
标签: reactjs react-redux