【发布时间】:2021-08-04 11:22:14
【问题描述】:
你好,社区!希望你们一切都好。
我试图在我的类组件中映射一个字典,但它给了我一个钩子错误。 我想创建几张具有不同信息的卡片,以便我这样接近,但现在它向我显示 Hooks 错误,我尝试了很多东西,发现这段代码有错误,但无法弄清楚请帮助我。
我的代码在下面
export class AskModal extends Component {
constructor(props) {
super(props);
this.state = {
modalState: true,
services: {
"Employement": [
"/employement",
"/images/humhai-static-data/employment.jpg",
"This para is for Employement",
"text-dark"
],
"Business opportunity": [
"/self-employement",
"/images/humhai-static-data/buisness-opportunity.jpg",
"This para is for Self Employement",
"text-dark"
],
"Covid Helpdesk": [
"../covid-helpline",
"/images/humhai-static-data/covid-helpdesk.jpg",
"This para is for Covid help desk",
"text-danger"
],
"Volunteer": [
"../covid-helpline/volunteer",
"/images/humhai-static-data/volunteer.jpg",
"This para is for Volunteer",
"text-dark"
],
},
};
this.toggle = this.toggle.bind(this);
}
toggle = () => {
this.setState({
modalState: !this.state.modalState
});
}
render() {
return (
<>
{Object.keys(this.state.services).map(name => (
<MDBCol md="3" size="6" className="mx-auto my-2">
<MDBCard className="border rounded h-100 z-depth-5" color={this.state.services[name][3]}>
<Link to={this.state.services[name][0]} onClick={this.toggle} className={this.state.services[name][3]}>
<MDBCardImage className="img-fluid" src={this.state.services[name][1]} />
<MDBCardBody>
<MDBCardTitle><i className="fa fa-chevron-right"></i> {name}</MDBCardTitle>
<div className="d-none d-lg-block">
<hr />
<MDBCardText>
<p>{this.state.services[name][2]}</p>
</MDBCardText>
</div>
</MDBCardBody>
</Link>
</MDBCard>
</MDBCol>
))
}
</>
);
}
}
【问题讨论】:
-
你说的是不可能的。代码中没有钩子。另外,类组件中不能使用钩子,需要先将其转换为函数组件
-
你能告诉我怎么做吗?我刚开始使用 react JS 和一个菜鸟 @Tyblitz
-
好像完全没有问题。你在使用任何图书馆吗?我在codesandbox上试过了,效果很好:codesandbox.io/s/icy-snowflake-0gsqx?file=/src/App.js
标签: javascript reactjs react-hooks jsx