我是react的新手,我正在尝试构建一个可以动态显示数据的框。
const Widget = ({type}) => {
let data = {
title:"",
increase: false,
amount: 0,
link:"View Billing",
icon: <KeyboardArrowUpIcon classname={"icon"}/>
};
我做了一个switch case来处理我收到的各种类型
switch (type){
case "Billing":
data={
title:"Billing",
increase: false,
amount: 4000,
link:"View Billing",
icon: <MonetizationOnOutlinedIcon className="icon"/>
};
break;
我以这种方式创建了if子句,我想根据increase的值显示一个图标。
return(
<div className="widget">
<div className="left">
<span className="title">{data.title}</span>
<span className="counter">{data.amount}</span>
<span className="link">{data.link}</span>
</div>
<div className="right">
<div className="percentage positive">
{(data.increase)? <KeyboardArrowUpIcon/> + ["20"] : <KeyboardArrowDownIcon/> + ["-13"]}
</div>
{data.icon}
</div>
</div>
)
但我得到的结果是
出于某种原因,我不知道,这个子句没有传递图标。
{(data.increase)? <KeyboardArrowUpIcon/> + ["20"] : <KeyboardArrowDownIcon/> + ["-13"]}
我做错了什么?我试着在div里面做一个if,但是我不能让它工作,但是像这样它有点工作,但是它不识别图标
3条答案
按热度按时间bqf10yzr1#
试试这个
它不起作用的原因是,您试图用一个数组连接组件示例,结果是Object对象
jvidinwx2#
这个表达式没有任何意义:
你正试图将一个组件添加到一个数组中,这两个东西都不能被有意义地添加到任何东西中,结果只是引擎将它们转换成字符串并将它们连接起来。
如果目标只是输出组件和字符串
"20"
,那么你可以简单地输出它们。对于JSX语法,你只需要把它们 Package 在一个封闭的元素中:为清楚起见,有空格:
i5desfxk3#
每个React节点都需要在一个容器下。你需要将你的逻辑 Package 在一个div或React.Fragment(简称为〈〉〈/〉)中。
但我仍然不明白为什么你用方括号为20和-13?我不知道你的应用程序的逻辑,但我觉得你的代码可能是这样的。
我希望这是你想要的答案。