微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

箭头函数不返回 HTML 选项标签

如何解决箭头函数不返回 HTML 选项标签

我在 javascript 中编写了一个箭头函数,用于检查特定的 itemId,然后输出相应的 HTML 选项标签。但是,由于某种原因,即使将 else 语句设置为认返回语句,也不会执行任何条件语句。

const handleDTime = (e) => {                               //this should be fine
  delivery_time = e.target.value;
};

 <div className="select">
   <select onChange={handleDTime} selected={delivery_time} value={delivery_time}>
                                                                
       {() =>  {                                           //javascript arrow function`
         if (itemId === "60e3a111557dc20017253d84") {
           return (
             <option> July 28,2021 </option>              //html tag <option>`
             <option> July 29,2021 </option>  

         );
         } else if (itemId === "60e3a121557dc20017253d87") {
           return (
             <option> July 29,2021 </option>
             <option> July 30,2021 </option>  
         );
         }
         else {
           <option> July 30,2021 </option>
           <option> July 31,2021 </option>  
         } 
       }}
         
   </select>
 </div>

在没有箭头函数的情况下编写上述相同的函数工作正常:

<div className="select">
    <select onChange={handleDTime} selected={delivery_time} value={delivery_time}>
       <option> Saturday,July 31 </option>                      //works fine
       <option> Sunday,August 1 </option>
    </select>
</div>

如何向上述函数添加条件语句以显示某个 HTML 选项标签

解决方法

您定义了函数,但也从未调用过它。

    <select onChange={handleDTime} selected={delivery_time} value={delivery_time}>
                                                            
        {(() =>  {                                           //javascript arrow function
          if (itemId === "60e3a111557dc20017253d84") {
            return (
              <option> July 28,2021 </option>              //html tag <option>
          );
          } else if (itemId === "60e3a121557dc20017253d87") {
            return (
              <option> July 29,2021 </option>
          );
          }
          else {
            <option> July 30,2021 </option>
          } 
        })()}
     
    </select>

注意函数周围的括号,还有另外一对调用它。

更新:如果你想返回多个元素,你必须将节点包裹在一个 Fragment 中:

          ...
          if (itemId === "60e3a111557dc20017253d84") {
            return (
              <>
                <option> July 28,2021 </option>              //html tag <option>
                <option> July 29,2021 </option>
              </>
          );
          ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?