reactjs - 如何从其他组件调用方法以使 onClick 选项工作
问题描述
我有两个组件:Main 和 LeftMenu。LeftMenu 组件上有一个图标。所需功能:单击图标将显示/隐藏主组件中的元素。
将 FaDropbox 图标添加到主组件时,我可以设置所需的功能。但是当我试图将它放入 LeftMenu 组件时,它不起作用。
FaDropbox 图标工作的主要组件:
class Main extends Component {
state = {
isShowTiles: true
};
render() {
return (
<div className="Main">
{/* Background color set with Helmet */}
<Helmet>
<style>{"body { background-color: #1A2C3B; }"}</style>
</Helmet>
<div className="Container">
<Row className="RowHeader">
<Header
user={this.props.user}
photo={this.props.photo}
userProfile={this.props.userProfile}
/>
</Row>
<Row>
<div class="toggleArea">
{this.state.isShowTiles ? <Tiles /> : <BoxTiles />}
</div>
</Row>
</div>
<button onClick={this.toggleComponents}>
<FaDropbox />
</button>
</div>
);
}
toggleComponents = () => {
this.setState({
isShowTiles: !this.state.isShowTiles
});
};
}
export default Main;
当我尝试从 FaDropbox 图标上的 LeftMenu 组件调用 toggleComponents 时,它不起作用。
class LeftMenu extends Component {
render() {
return (
<div className="LeftMenu">
{/* Base Layout */}
<div className="LeftContainer">
<Row className="justify-content-md-center">
<div className="LeftIcon">
{/* <FaDropbox/> */}
<button onClick={toggleComponents}>
<FaDropbox />
</button>
</div>
</Row>
</div>
</div>
);
}
}
export default LeftMenu;
我试图从 Main 组件中导出 toggleComponents 方法,如下所示,但它不起作用:
export function toggleComponents() {
return this.toggleComponents;
}
预期的结果是使 FaDropbox 图标具有 onClick 选项,但在 LeftMenu 组件上。我不想在主要组件上有 FaDropbox。如何实现这一点并从 Main 组件外部正确调用此方法?
解决方案
向 LeftMenu 类添加一个 toggleComponents 函数,并以与 Main 中相同的方式使用它
<button onClick={this.toggleComponents}><FaDropbox/></button>
记住this
课堂上的绑定:
https ://reactjs.org/docs/handling-events.html
您还可以将toggleComponents
函数传递给LeftMenu
<LeftMenu toggleComponents={this.toggleComponents} />
class LeftMenu extends Component {
render() {
return (
...
<button onClick={this.props.toggleComponents}><FaDropbox/></button>
)
}
}
推荐阅读
- php - Vtiger Query webservice在邮递员中返回403访问禁止错误
- python - 无法使用 tf.data.Dataset.from_generator 将适当的形状传递给张量流模型
- python-3.x - 解决方案列表[]中每次迭代的需求总和如何?
- r - 将 R 数据框导出到 excel,但使用列标签作为 excel 文件中的标题
- laravel - 未定义属性:Illuminate\View\Factory::$startSection
- python - 具有融化功能 Pandas 的 InvalidIndexError
- data-modeling - InterSystems IRIS 是否支持一对一关系?
- node.js - Npm start 和 Build 不再在我的 Windows 上运行
- c++ - 在C中将字符串十六进制转换为无符号字符(BYTE)
- ssl - Chrome 中的 SSE 客户端在几秒钟后断开连接