我在 React 中有一个模态框,它在首次呈现应用程序时显示
I have a Modal in React that is showing when first rendering the App
我有一个模态框,里面有一个表单,我想在第一次呈现应用程序时关闭它。
只有当我点击“添加更多”按钮时,这个模式才会打开。
问题是情况恰恰相反,当我渲染应用程序时模态窗口已经打开。
我已经使用过模态框,我知道我可以使用 useState() 来切换它是否打开。
这是有关模态框的所有代码。
我正在使用 React Bootstrap.
// App.tsx
const [showFormModal, setShowFormModal] = useState(false);
const closeForm = () => {
setNewTable({});
setShowFormModal(false);}
<TableForm
show={showFormModal}
handleClose={closeForm}
onInputChange={onInputChange}
addPost={addNewTable}
/>
这是关于组件内部模态的代码:
//TableForm
const TableForm = (
show: any,
handleClose: any,
onInputChange: any,
addPost: any
) => {
const [validate, setValidate] = useState(false);
const checkAndAddStarship = async (e: any) => {
setValidate(true);
try {
await addPost(e);
setValidate(false);
handleClose();
} catch (e) {
window.alert(e);
}
};
console.log(show);
return (
<Modal size="xl" centered show={show} onHide={handleClose}>
<Modal.Header closeButton onClick={handleClose}>
<Modal.Title>Add New Table</Modal.Title>
检查您在组件中收到的类型。也许做 show : boolean
而不是 show : any
谢谢日村,
我解决了问题:
我以错误的方式将道具传递给 TableForm:基本上我告诉我的应用程序 'show' 变量是一个包含其他 3 个道具的完整对象。
这是我的错误:
const TableForm = (
show: any,
handleClose: any,
onInputChange: any,
addPost: any
)
我只需将其更改为即可使其工作:
const TableForm = ({show, handleClose, onInputChange, addPost})
我忘记了{}
我有一个模态框,里面有一个表单,我想在第一次呈现应用程序时关闭它。 只有当我点击“添加更多”按钮时,这个模式才会打开。 问题是情况恰恰相反,当我渲染应用程序时模态窗口已经打开。
我已经使用过模态框,我知道我可以使用 useState() 来切换它是否打开。
这是有关模态框的所有代码。 我正在使用 React Bootstrap.
// App.tsx
const [showFormModal, setShowFormModal] = useState(false);
const closeForm = () => {
setNewTable({});
setShowFormModal(false);}
<TableForm
show={showFormModal}
handleClose={closeForm}
onInputChange={onInputChange}
addPost={addNewTable}
/>
这是关于组件内部模态的代码:
//TableForm
const TableForm = (
show: any,
handleClose: any,
onInputChange: any,
addPost: any
) => {
const [validate, setValidate] = useState(false);
const checkAndAddStarship = async (e: any) => {
setValidate(true);
try {
await addPost(e);
setValidate(false);
handleClose();
} catch (e) {
window.alert(e);
}
};
console.log(show);
return (
<Modal size="xl" centered show={show} onHide={handleClose}>
<Modal.Header closeButton onClick={handleClose}>
<Modal.Title>Add New Table</Modal.Title>
检查您在组件中收到的类型。也许做 show : boolean
而不是 show : any
谢谢日村,
我解决了问题: 我以错误的方式将道具传递给 TableForm:基本上我告诉我的应用程序 'show' 变量是一个包含其他 3 个道具的完整对象。
这是我的错误:
const TableForm = (
show: any,
handleClose: any,
onInputChange: any,
addPost: any
)
我只需将其更改为即可使其工作:
const TableForm = ({show, handleClose, onInputChange, addPost})
我忘记了{}