css React JS if子句在HTML中无法正常工作

gajydyqb  于 2023-03-25  发布在  React
关注(0)|答案(3)|浏览(116)

我是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,但是我不能让它工作,但是像这样它有点工作,但是它不识别图标

bqf10yzr

bqf10yzr1#

试试这个

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>
);

它不起作用的原因是,您试图用一个数组连接组件示例,结果是Object对象

jvidinwx

jvidinwx2#

这个表达式没有任何意义:

<KeyboardArrowUpIcon/> + ["20"]

你正试图将一个组件添加到一个数组中,这两个东西都不能被有意义地添加到任何东西中,结果只是引擎将它们转换成字符串并将它们连接起来。
如果目标只是输出组件和字符串"20",那么你可以简单地输出它们。对于JSX语法,你只需要把它们 Package 在一个封闭的元素中:

<><KeyboardArrowUpIcon/>20</>

为清楚起见,有空格:

<>
  <KeyboardArrowUpIcon/>
  20
</>
i5desfxk

i5desfxk3#

每个React节点都需要在一个容器下。你需要将你的逻辑 Package 在一个div或React.Fragment(简称为〈〉〈/〉)中。

{(data.increase) ? 
(<>
<KeyboardArrowUpIcon/> + ["20"]
</>) 
: (<>
<KeyboardArrowDownIcon/> + ["-13"]
</>)}

但我仍然不明白为什么你用方括号为20和-13?我不知道你的应用程序的逻辑,但我觉得你的代码可能是这样的。

{(data.increase) ? 
(<>
<KeyboardArrowUpIcon/>
<div>20</div>
</>) 
: (<>
<KeyboardArrowDownIcon/>
<div>-13</div>
</>)}

我希望这是你想要的答案。

相关问题