javascript - 通过 ReactJs 中的事件处理创建内容以传递给子级
问题描述
我有一个要求,我正在制作一个可重用的模式,其结构如下所示:
--Parent.js
--ModalComponent.js
在父级中,我正在单击为模态创建内容,
getModalContent = () => {
let ModalBody = (
<div onClick={this.clickableHandler}> //I want this clickableHandler to trigger in child(modal component)
This is clickable
</div>
);
this.setState({modalContent: ModalBody});
}
render(){
return(
<button onClick={this.getModalContent}>Open modal</button>
<ModalComponent modalContent={this.state.ModalContent}/>
);
}
在子(模态)组件中,单击该 div 时,我希望触发 clickableHandler 函数。模态组件.js----
import React, {Component} from 'react';
class ModalComponent extends Component{
clickableHandler = () => {
console.log('I am clicked');
}
render(){
return (
<div>
{this.props.modalContent}
</div>
);
}
}
但是通过这样做,我没有让函数 clickableHandler() 函数在模态(即子组件)中被触发。让我知道我哪里出错了。
解决方案
由于clickHandler
实际上是在内部定义的,并且您正在提供来自 Parent 组件的内容,因此在likeModalComponent
中使用它可能是一个好主意renderProps
ModalComponent
import React, {Component} from 'react';
class ModalComponent extends Component{
clickableHandler = () => {
console.log('I am clicked');
}
render(){
return this.props.children(this.clickableHandler);
}
}
并像使用它一样
getModalContent = (clickableHandler) => {
return (
<div onClick={clickableHandler}>
This is clickable
</div>
);
}
render(){
return(
<button onClick={this.getModalContent}>Open modal</button>
<ModalComponent>
{getModalContent}
</ModalComponent>
);
}
推荐阅读
- reactjs - 如何在使用 react-hook 调用 setState 后使用更新的状态
- prolog - 为什么我的谓词不起作用,而类似的谓词却起作用?
- git - github.com:权限被拒绝(公钥)
- php - 如何在 PHP 中将数组键添加到子数组
- android - 无法将 RxJava 与 Hengam SDK 一起使用
- html - 如何在 CSS 中覆盖引导导航栏的折叠
- r - 在 R 中,如何选择在某个行索引中包含某个值的某些列?
- android - 如何在 Android 应用程序中检查它正在使用加密共享首选项并以编程方式安全地迁移到它
- reactjs - 迁移到打字稿后,Firebase 云功能无法正常工作
- jenkins - 创建拉取请求以分支时,Github 未触发作业