我使用材料ui 1.0.0-beta.35中的标签,标签和 Appbar 来显示一些带有标签的标签带有数据的对象。
我从material-ui得到了这个错误:
Warning: Material-UI: the value provided `undefined` is invalid
我可以在 codesandbox (材料ui 1.0.0-beta.38但同样的错误)中重现它:
点击"控制台"看错误。 据我所知,我遵循了这些指导原则? :
https://material-ui-next.com/api/tabs/
https://material-ui-next.com/api/tab/
https://material-ui-next.com/api/app-bar/
在实际项目中,当我单击选项卡时,这会导致appbar无法运行。它确实工作了一段时间,但后来这个错误发生了,但我还没能找到导致错误的原因。
答案 0 :(得分:5)
使用<location>
组件,您负责维护您所在州的所选标签,这是它抱怨的未定义Tabs
道具。所以你需要做这样的事情:
value
然后将class TabsContainer extends Component {
state = {
selectedTab: 'shop-setup'
}
handleTabClick = (event, value) => {
this.setState({selectedTab: value});
}
..
<TabsContent
tabs={tabData}
selectedTab={this.state.selectedTab}
onChange={this.handleTabClick}
/>
..
}
作为selectedTab
传递给value
:
Tabs
如果您不为每个const TabsContent = ({ tabs, selectedTab, onChange }) => {
..
<Tabs value={selectedTab} onChange={onChange}>
..
};
提供value
,则初始化会更容易,因此Tab
只会成为索引。
您还希望将selectedTab
定义从RenderTab
中提取出来,因为它现在每次渲染都是新创建的,这将导致不必要的重新安装和可能的状态丢失。
更新:这是一个有效的sandbox