【发布时间】:2019-03-26 18:44:57
【问题描述】:
我正在使用 Google 的 Material-UI 构建一个 ReactJS 应用程序。
在提交搜索后,我有以下子类显示在网格中。根据搜索是一种类型还是另一种类型,这个子类中的 ExpansionPanel 应该展开还是不展开。
这是在父组件中映射的类:
expandByDefault 布尔值是从父类传递的。
class SearchResults extends React.Component {
render () {
const { classes } = this.props;
const { batchAndContents } = this.props;
const { expandByDefault } = this.props;
return (
<div>
<ExpansionPanel defaultExpanded={expandByDefault} >
<ExpansionPanelSummary>
<Typography className={classes.heading}>Box {batchAndContents.sequenceCode}</Typography>
</ExpansionPanelSummary>
<ExpansionPanelDetails>
<SearchResultsTable contents={batchAndContents.contents}/>
</ExpansionPanelDetails>
</ExpansionPanel>
</div>
)
}
}
这里是父类的渲染方法: 你可以在我的自定义类 SearchResults 中看到,我传递了一个名为 expandByDefault 的道具。
render () {
return (
<div>
. . . . .
. . . . .
. . . . .
<Grid container spacing={24} style={{padding: 24}}>
{this.state.searchResults.map((searchResult) => (
<Grid item key={searchResult.sequenceCode+searchResult.state} xs={12}>
<SearchResults batchAndContents={searchResult} expandByDefault={this.state.lastSearchType === "ContentBarcode"}/>
</Grid>
))}
</Grid>
</div>
)
}
我已经尝试了几种变体来使其正常工作,但我似乎无法理解我缺少什么。
有趣的是,当我最初执行搜索时,ExpansionPanel 的属性 defaultExpanded 设置为 true,它可以工作。但是,如果我不刷新页面并使用不同类型执行另一次搜索,那么当类型应该导致该行为时,结果不会倒塌。
如果我最初执行搜索并且将 ExpansionPanel defaultExpanded 设置为 false,则会发生相同的行为。它在点击时展开,并且默认折叠,但是,当将搜索类型更改为应该导致默认展开面板的内容时,它不起作用。
感谢任何指导。
【问题讨论】:
-
你想要
expanded,而不是defaultExpanded。 -
@Herohtar 感谢您的回复,这实际上不是问题,我在下面发布了我的解决方案。谢谢!
标签: javascript reactjs material-ui