reactjs - 如何在 onSubmit 上使用嵌套函数或多个函数反应
问题描述
这是我的代码
function MyModal(props) {
const [modalIsOpen, setmodalIsOpen] = useState(false)
return (
<div className="App">
<button onClick={()=>{setmodalIsOpen(true)}}>Open modal</button>
<ListItems items={props.items}
deleteItem={props.deleteItem}
setUpdate={props.setUpdate}
/>
<Modal isOpen={modalIsOpen} onRequestClose={()=>setmodalIsOpen(false)}>
<header>
<form id="to-do-form" onSubmit={props.addItem}>
<input type="text" placeholder="Enter Text"
value={props.currentItem}
onChange={props.handleInput}
/>
<button type="submit">Add</button>
</form>
</header>
<button onClick={()=>{setmodalIsOpen(false)}}>Close</button>
</Modal>
</div>
);
}
问题是我想关闭onSubmit
表单模式。但是当我setmodalIsOpen(false)
在另一个页面(app.js)上使用它时,它在那里是未定义的。如果我声明另一个包含两者的函数,props.addItem
那么setmodalIsOpen(false)
两者都是未定义的。
这是我在另一个页面上的 addItem 方法
addItem(e){
e.preventDefault();
const newItem=this.state.currentItem;
console.log(newItem);
if(newItem!==""){
const newItems=[...this.state.items,newItem];
this.setState({
items:newItems,
currentItem:{
text:'',
key:''
}
})
}
}
解决方案
您必须使用父组件状态来显示带有道具的模型传递父状态并更新 addItem 上的状态(如果您的 addItem 在您的父组件中)
推荐阅读
- python-3.x - 为什么我不能在 python 函数中使用 HoughCircles?
- javascript - 如何同时控制多个标签 Puppeteer
- android - 如何从源代码中隐藏 AdMob 应用 ID
- javascript - 数据表日期时间格式排序问题
- composer-php - Composer 不拉包 v10.4.21
- azure - 如何在 Azure 运行管道菜单中添加默认变量
- conda - conda-forge 安全吗?
- django - 如何在 djhtml 中配置 tabwidth?
- python - 使用 camelot-py (lattice) 提取 PDF 表:split_text 不起作用
- android - 如何修复他的错误异常:Gradle 任务 assembleDebug 失败,退出代码为 1