React Semantic UI - 没有触发器的模式?
React Semantic UI - Modal without trigger?
是否可以在没有触发器的情况下使用模态框?我将通过状态打开和关闭它。
例如,我想在输入字段(带有文件名)上使用 onClick 以使用文件选择器打开模式,然后在输入字段中编辑所选文件的名称。所有这些都在嵌套模式中......
如果我在没有触发器的情况下在父组件中同时拥有两个模态,看起来会简单得多,我将通过 open={true/false}
display/hide 它们
谢谢
是的。不要设置 prop 触发器(不需要),只需提供 state/props.
的开放值
class container extends Component {
state = {
isParentOpen: false,
isChildOpen: false
}
handleClick = () => {
this.setState({
isParentOpen: !this.state.isOpen
});
}
handleFocus = () => {
this.setState({
isChildOpen: true
});
}
render() {
return (
<div>
<Modal
open={this.state.isParentOpen}
size="large"
>
...
<Input onFocus={this.handleFocus} />
</Modal>
<Modal
open={this.state.isChildOpen}
size="small"
>
...
</Modal>
<Button onClick={this.handleClick} />
</div>
);
}
}
(如果你愿意,你可以嵌套Modal)
将 prop 传递给模态组件,并根据 ComponentDidMount 上的 prop 触发 handleOpen。这将允许关闭模式。
class ModalContainer extends Component {
componentDidMount() {
const { startOpen } = this.props;
if (startOpen) {
this.handleOpen();
}
}
handleOpen = () => this.setState({ modalOpen: true });
handleClose = () => this.setState({ modalOpen: false });
render() {
return (
<Modal open={this.state.modalOpen} onClose={this.handleClose} />
)
}
是否可以在没有触发器的情况下使用模态框?我将通过状态打开和关闭它。 例如,我想在输入字段(带有文件名)上使用 onClick 以使用文件选择器打开模式,然后在输入字段中编辑所选文件的名称。所有这些都在嵌套模式中...... 如果我在没有触发器的情况下在父组件中同时拥有两个模态,看起来会简单得多,我将通过 open={true/false}
display/hide 它们谢谢
是的。不要设置 prop 触发器(不需要),只需提供 state/props.
的开放值class container extends Component {
state = {
isParentOpen: false,
isChildOpen: false
}
handleClick = () => {
this.setState({
isParentOpen: !this.state.isOpen
});
}
handleFocus = () => {
this.setState({
isChildOpen: true
});
}
render() {
return (
<div>
<Modal
open={this.state.isParentOpen}
size="large"
>
...
<Input onFocus={this.handleFocus} />
</Modal>
<Modal
open={this.state.isChildOpen}
size="small"
>
...
</Modal>
<Button onClick={this.handleClick} />
</div>
);
}
}
(如果你愿意,你可以嵌套Modal)
将 prop 传递给模态组件,并根据 ComponentDidMount 上的 prop 触发 handleOpen。这将允许关闭模式。
class ModalContainer extends Component {
componentDidMount() {
const { startOpen } = this.props;
if (startOpen) {
this.handleOpen();
}
}
handleOpen = () => this.setState({ modalOpen: true });
handleClose = () => this.setState({ modalOpen: false });
render() {
return (
<Modal open={this.state.modalOpen} onClose={this.handleClose} />
)
}