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

我在使用条件语句时遇到问题,目前如果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>


婷婷同学_
浏览 138回答 1
1回答

陪伴而非守候

为了&&执行这两个表达式,第一个必须返回一个真值,否则右侧将不会被执行: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&nbsp;函数不返回任何内容如果您希望在不依赖返回值的情况下执行两个表达式,则可以使用逗号运算符: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()}>&nbsp; &nbsp; &nbsp; {selectedItem === null&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ? setOption(dropdownItems[0].value), setPage(1)&nbsp; &nbsp; &nbsp; &nbsp; : setOption(selectedItem.value), setPage(1) }&nbsp; &nbsp; &nbsp; {`${option}`}&nbsp; <ArrowIcon isOpen={isOpen} /></button>另一种,如果你想呼叫setPage后setOption完成后,将利用回调参数,并通过将调用一个函数setPage(1)来setOption:<button {...getToggleButtonProps()}>&nbsp; &nbsp; &nbsp; {selectedItem === null&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ? setOption(dropdownItems[0].value, () => setPage(1))&nbsp; &nbsp; &nbsp; &nbsp; : setOption(selectedItem.value, () => setPage(1)) }&nbsp; &nbsp; &nbsp; {`${option}`}&nbsp; <ArrowIcon isOpen={isOpen} /></button>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript