为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 条件与符号语句仅读取前半部分

javascript 条件与符号语句仅读取前半部分

婷婷同学_ 2021-06-01 10:11:38
我在使用条件语句时遇到问题,目前如果selectedItem = null它会设置setOption = dropdownItems[0].value但不会设置setPage = 1并且与其下方的行相同,关于发生了什么的任何反馈?这是我当前的代码      <button {...getToggleButtonProps()}>              {selectedItem === null                 ? setOption(dropdownItems[0].value) && setPage(1)                : setOption(selectedItem.value) && setPage(1) }              {`${option}`}          <ArrowIcon isOpen={isOpen} />       </button>
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

为了&&执行这两个表达式,第一个必须返回一个真值,否则右侧将不会被执行:


const returnsFalse = () => false;

const returnsTrue = () => true;

const returnsNothing = () => {};


returnsFalse() && console.log("does not work with false");

returnsTrue() && console.log("works with true");

returnsNothing() && console.log("does not work with no return value");

setOption 函数不返回任何内容

如果您希望在不依赖返回值的情况下执行两个表达式,则可以使用逗号运算符:


const returnsFalse = () => false;

const returnsTrue = () => true;

const returnsNothing = () => {};


(returnsFalse(), console.log("works with false"));

(returnsTrue(), console.log("works with true"));

(returnsNothing(), console.log("works with no return value"));

所以,你的代码应该是这样的:


<button {...getToggleButtonProps()}>

      {selectedItem === null 

        ? setOption(dropdownItems[0].value), setPage(1)

        : setOption(selectedItem.value), setPage(1) }

      {`${option}`}

  <ArrowIcon isOpen={isOpen} />

</button>

另一种,如果你想呼叫setPage后setOption完成后,将利用回调参数,并通过将调用一个函数setPage(1)来setOption:


<button {...getToggleButtonProps()}>

      {selectedItem === null 

        ? setOption(dropdownItems[0].value, () => setPage(1))

        : setOption(selectedItem.value, () => setPage(1)) }

      {`${option}`}

  <ArrowIcon isOpen={isOpen} />

</button>


查看完整回答
反对 回复 2021-06-03
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信