javascript - 无法访问从父级触发的回调处理程序内的子级状态。(反应)
问题描述
这是一个活生生的例子。计数器保持静态,不会增加。 https://codepen.io/tudou/pen/jQeYaM
我ParentModal
用作模型布局,它具有标题、页脚(公共共享组件)和ChildModalForUserForm
.
但是,当用户单击提交按钮时ParentModal
,会触发ChildModalForUserForm
.
在submitHandler
中,我无法访问状态变量。我该如何解决这个问题?
const ParentModal = (props) => {
const {name, primaryButtonHandler} = props;
return ReactDOM.createPortal(
<>
~~~
<button type="submit" onClick={primaryButtonHandler}>
</>, document.body
) ;
}
export default ParentModal;
const ChildModalForUserForm = ({user}) => {
const [name, setName] = useState(user?.name)
const [title, setTitle] = useState(user?.title)
const submitHandler = (e) =>{
// process form data and fire request.
// however, not able to access title state here.
// but setTitle is acceessible
}
return (
<>
<ParentModal
name={`hello world`}
primaryButtonHandler={submitHandler}
>
~~~~~
</ParentModal>
</>
)
}
export default ChildModalForUserForm;
解决方案
推荐阅读
- php - 带有数组的php GET方法
- python - 了解 decision_function 值
- powershell - 打印 Active Directory 中的实际员工列表
- asp.net - ASP.NET 内存缓存和线程阻塞
- ruby - Ruby 正则表达式 - 从 html 字符串中删除空换行符
- amazon-web-services - 如何解决 AWS SAM 模板中的循环依赖
- reactjs - Azure IIS Rewrite 中的 React Router
- qt - 修改 Qt Widgets Application 模板
- node.js - 使用 MongoDb 将 Nuxt.js 通用应用程序和 Node.js 服务器部署到 Digital Ocean
- python - Python - 在扫描导入语句的字符串文字时 EOL