【发布时间】:2018-05-27 17:04:44
【问题描述】:
我有一个父有状态组件,我将显示对话框的状态传递给一个无状态标题组件。 当一个图标单击标题组件时,它会打开一个无状态对话框组件。 在无状态对话框组件中,我希望能够将数据输入到文本字段中。 我是否必须完全更改我的代码才能使无状态对话框成为有状态组件? 下面是我的代码。如果有人可以推荐这样做的最佳方法。谢谢。
class Layout extends Component {
state = {
show:false
}
toggleSidenav = (action) =>{
this.setState({
showDialog:action
})
}
render(){
return(
<div>
<Header
showNav={this.state.showDialog}
onHideNav={() => this.toggleSidenav(false)}
onOpenNav={() => this.toggleSidenav(true)}
/>
</div>
)
}
}
export default Layout;
标题组件
const Header = (props) => {
console.log(props.onOpenNav)
const navBars = () => (
<div>
<AppBar position="static">
<Toolbar>
<IconButton color="inherit" aria-label="createfolder">
<SvgIcon>
<path d={createfolder}
onClick={props.onOpenNav}
name="firstName" />
</SvgIcon>
</IconButton>
</Toolbar>
</AppBar>
</div>
)
return (
<div>
<SideNav {...props} />
<div>
{navBars()}
</div>
</div>
)
}
对话框组件
const DialogBox = (props) => {
return (
<div>
<Dialog
open={props.showNav}
aria-labelledby="form-dialog-title">
<DialogTitle id="form-dialog-title">Add Folder</DialogTitle>
<DialogContent>
<TextField
margin="normal"
/>
</DialogContent>
<DialogActions>
<Button onClick={props.onHideNav} color="primary">
Cancel
</Button>
<Button onClick={props.onHideNav} color="primary"
onChange={this.handleFieldChange}
value={this.value}
>
Create
</Button>
</DialogActions>
</Dialog>
</div>
)
}
【问题讨论】:
-
您必须将输入作为状态保存在某处。不一定要在
DialogBox中,可以放在父组件中,通过props传递给DialogBox
标签: reactjs