材质用户界面-带有复选框的扩展面板

Man*_*Tak 7 material reactjs material-ui react-material

我正在使用Material-UI进行UI设计。我正在使用集成了复选框的扩展面板。

请找到以下代码,

<ExpansionPanel 
    expanded={expanded === item.description} 
    onChange={this.handleChange(item.description)}
>
    <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>
        <Grid item xs={1}>
            <Checkbox
                value="checkedB"
                color="primary"
            />
        </Grid>
        <Grid item xs={2}>
            <Typography className={classes.heading}>
                {item.description}
            </Typography>
        </Grid>
        <Typography className={classes.desc}>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
            Suspendisse malesuada lacus ex,
            sit amet blandit leo lobortis eget.
        </Typography>
    </ExpansionPanelSummary>
    <ExpansionPanelDetails>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
        Suspendisse malesuada lacus ex,
        sit amet blandit leo lobortis eget.
    </ExpansionPanelDetails>
</ExpansionPanel>
Run Code Online (Sandbox Code Playgroud)

但是我面临一个问题,当我选中或取消选中复选框时,扩展面板会扩展或折叠。由于该复选框,我想避免在扩展面板上执行任何操作。我该如何实现?

提前致谢。

Gyu*_*hoi 7

您可以停止传播事件:

function handleClickCheckbox(e) {
  e.stopPropagation();
  // do something
}

...

<Checkbox value="checkedB"
          color="primary"
          onClick={e => handleClickCheckbox(e)}
/>
Run Code Online (Sandbox Code Playgroud)

https://codesandbox.io/s/431284p0m0

或更简单地说:

<Checkbox value="checkedB"
          color="primary"
          onClick={e => {e.stopPropagation();}}
/>
Run Code Online (Sandbox Code Playgroud)


小智 0

不是您问题的直接答案。但是通过使用以下代码,您只能通过图标打开/关闭扩展面板

<ExpansionPanelSummary expandIcon={<ExpandMoreIcon onClick={() => {
               this.setState({
                 expansionPanelOpen: !this.state.expansionPanelOpen
               });
             }}/>}>
               ....
Run Code Online (Sandbox Code Playgroud)

  • 这实际上帮助了我。只需将“expanded”属性添加到“ExpansionPanel”组件,其值为 bool 状态 (2认同)