reactjs - 有没有办法通过使用 HandleClick 来调用组件?
问题描述
我面临着制造和理解的麻烦,如果可能的话,如何用我的反应日历调用我的组件(当我 localhost:3000/Avaibalities 时,我的日历工作得很好)。
这是代码:
我的投资组合主页:
import React from 'react';
import NavigationNew from '../components/NavigationNew';
import Modal from './Modal';
const Home = () => {
return (
<div className="home">
<NavigationNew />
<div className="homeContent">
<div className="content">
<h1>Welcome</h1>
<h2>I'm a Front Desk Agent</h2>
<a href="./CV.pdf" target="_blank">Download CV</a>
<Modal />
</div>
</div>
</div>
);
};
export default Home;
`
这是我的组件 Modal,主页通过一个按钮调用我的带有日历的 Avaibalities 组件。
import React from 'react';
import Avaibalities from './Avaibalities';
class Modal extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
return <Avaibalities />
}
render() {
return (
<div>
<button onClick={this.handleClick.bind(this)}>Book me</button>
</div>
);
}
};
export default Modal;
这是可用性组件:
import React from 'react';
import Calendar from "react-calendar";
class Avaibalities extends React.Component {`enter code here`
render() {
return (
<>
<div className="CalendarMain">
<h2>My Avaibalities</h2>
<Calendar />
</div>
</>
)
}
}
export default Avaibalities;
解决方案
一种更直接且对 React 友好的处理方式是建立一些有条件地显示组件的状态。
这是您要应用的修改类型:
import React from 'react';
import Avaibalities from './Avaibalities';
class Modal extends React.Component {
constructor(props) {
super(props);
this.state = {
displayAvailabilities: false,
}
}
render() {
return (
<div>
{this.state.displayAvailabilities && <Availabilities />}
<button
onClick={() => this.setState({ displayAvailabilities: true })}
>
Book me
</button>
</div>
);
}
};
当相应的状态设置为 true 时,这利用了短路来显示可用性组件。然后,您可以通过将该状态设置为 false 来再次隐藏它们。
除此之外,您当前的方法肯定是返回组件,但没有什么告诉 React 渲染从您的函数返回的组件。
推荐阅读
- docker - 停止 UFW 阻止来自 docker 网络的输入
- azure - Azure 自动化 - 使用 AD 用户登录会引发错误
- powershell - 无法在 Powershell 中使用 Gmail SMTP 发送电子邮件。错误:smtpServer 需要安全连接或客户端未通过身份验证。怎么修?
- db2 - IBM DB2 ODBC 驱动程序为 ODBC API SQLGetInfo() 返回错误的值
- javascript - 如何在 reactjs 中使用单个 ListItem 映射路由?
- angular - Angular / Typescript以编程方式将图像(blob)复制到剪贴板
- azure-devops - 从构建中自动设置 Release.ReleaseDescription。(Azure devops 管道)
- react-native - Expo AsyncStorage 返回承诺问题
- django - 测试 Django Rest Framework:如何测试超链接关系?
- javascript - 传单在 GeoJSON 层中移动多边形的单点