开发者问题收集

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