Material-UI:提供的值“undefined”无效
2018-04-11
21895
我使用 Material UI 1.0.0-beta.35 中的 Tabs 、 Tab 和 Appbar 来显示一些带有从包含数据的对象导入的标签的选项卡。
我从 Material UI 收到此错误:
Warning: Material-UI: the value provided `undefined` is invalid
我可以在此 codesandbox (Material 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/
在实际项目中,这会导致我单击选项卡时应用栏不起作用。它确实工作了一段时间,但后来这个错误突然发生,但我一直无法找到导致错误的原因。
1个回答
使用
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}>
..
};
如果您不为每个
Tab
提供
value
,则初始化会更容易,因此
selectedTab
只会变成一个索引。
您还需要将
RenderTab
定义从
TabContent
中提升出来,因为它现在在每次渲染时都是全新创建的,这将导致不必要的重新挂载和可能的状态丢失。
更新:这是一个有效的 沙盒
Oblosys
2018-04-11