javascript - 如果其他条件反应地图功能
问题描述
我正在尝试使用地图功能添加一个条件来显示电子邮件链接。
如果项目包含电子邮件,则显示它。
但是,它仍然无法正常工作,因为它应该显示“无链接”,控制台日志显示正确。我将不胜感激任何帮助。
import React, { Component } from 'react';
import listIcon from '../img/list-icon.svg';
class FaqList extends Component {
state = {
items: [
{ id: 1, name: "Lorem.", answer: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.", email: "hello@email.com", expanded: false },
{ id: 2, name: "Lorem.", answer: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.", expanded: false }
]
};
render() {
let link;
const isEmail = this.state.items.map(item => {
if (item.email) {
console.log(item.email); // showing email
link = 'show link';
} else {
link = 'no link';
}
});
return this.state.items.map(el => (
<div
key={el.id}
onClick={() => this.handleToggle(el.id)}
className={el.expanded ? "faq__columns--item--active faq__columns--item" : "faq__columns--item"}
>
<div className="faq__content">
<p className="mb-0">{el.answer}</p>
{link} // Template here
</div>
</div>
));
}
}
export default FaqList;
解决方案
不需要 isEmail,使用 jsx 功能,您可以在渲染中控制 map 函数内的电子邮件链接可见性,如下所示:
render() {
return (
<div>
{this.state.items.map(el => (
<div
key={el.id}
onClick={() => this.handleToggle(el.id)}
className={
el.expanded
? 'faq__columns--item--active faq__columns--item'
: 'faq__columns--item'
}
>
<div className="faq__content">
<p className="mb-0">{el.answer}</p>
{el.email && <div>email: {el.email}</div>}
</div>
</div>
))}
</div>
);
}
推荐阅读
- node.js - 为什么我的 GraphQL 订阅在本地服务器上运行,但在实时服务器上部署时却不行
- python - Python正则表达式,否定字符串之间的一组字符
- javascript - 如何在 jquery .html() 方法中设置数组或倍数 var?
- html - 我希望引导程序在一个扩展另一个将关闭时崩溃
- mongodb - MongoExpress 没有从 .env 文件中读取登录名/密码
- python - 链接响应是 401,但它在前一段时间工作,然后工作 python
- javascript - Firebase 模拟器对本地 FireStore 的请求不成功
- reactjs - 什么是防止浏览器缓存文件反应的最佳解决方案
- git - 如何为 git pull 合并消息提供评论
- terraform - 用于检索键值的 Terraform 过滤器