【发布时间】:2025-12-15 07:50:01
【问题描述】:
我想要做的是添加引导反应模式并从无状态函数中触发它。我能找到的所有示例都需要更改组件状态中的“显示”,但是由于我没有使用 af 组件,所以我真的不知道该怎么做。
【问题讨论】:
我想要做的是添加引导反应模式并从无状态函数中触发它。我能找到的所有示例都需要更改组件状态中的“显示”,但是由于我没有使用 af 组件,所以我真的不知道该怎么做。
【问题讨论】:
https://react-bootstrap.github.io/components/modal/
你需要state 在某个地方显示模态。您可以使用钩子在功能性(不是真正的“无状态”)组件中使用useState 来完成它。
function App() {
const [open, setOpen] = useState(false);
return (
<>
<Button variant="primary" onClick={() => setOpen(true)}>
Launch demo modal
</Button>
<Modal show={open} onHide={() => setOpen(false)}>
<Modal.Header closeButton>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={() => setOpen(false)}>
Close
</Button>
<Button variant="primary" onClick={() => setOpen(false)}>
Save Changes
</Button>
</Modal.Footer>
</Modal>
</>
);
}
代码沙盒:https://codesandbox.io/embed/z2ky5l128l
如果您不想这样做,则需要从树中较高的组件传递 prop,例如:
class App extends React.Component {
state = {
open: true,
}
render() {
return <ModalComponent open={open} hide={() => this.setState({open: false})} />
}
}
function ModalComponent = ({open, hide}) => (
<Modal show={open} onHide={hide}>
<Modal.Header closeButton>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={hide}>
Close
</Button>
</Modal.Footer>
</Modal>
)
【讨论】:
只需像下面这样从父级传递可见状态
class parent extends Component {
state = {
modalVisibility : false
}
handleModalVisibility = (action)=> this.setState({modalVisibility : action})
return (
<div>
<button onClick={this.handleModalVisibility.bind(this,true)} >Show Modal</button>
//use this props to show or cancel the modal
<ModalComponent visibility ={this.state.modalVisibility} handleModal={this.handleModalVisibility} />
</div>
)
}
【讨论】:
我想你可以用 useState 做到这一点 https://reactjs.org/docs/hooks-state.html
【讨论】: