带有条件号的javascript仅读取前半部分

时间:2019-05-16 19:43:47

标签: javascript reactjs

我在使用条件语句时遇到麻烦,目前如果selectedItem = null会设置setOption = dropdownItems[0].value但不会设置setPage = 1并与下面的行相同,则对发生的事情有任何反馈吗?< / p>

  

这是我当前的代码

      <button {...getToggleButtonProps()}>
              {selectedItem === null 
                ? setOption(dropdownItems[0].value) && setPage(1)
                : setOption(selectedItem.value) && setPage(1) }
              {`${option}`}
          <ArrowIcon isOpen={isOpen} />
       </button>

1 个答案:

答案 0 :(得分:2)

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

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 function does not return anything

如果要执行两个表达式而不依赖于它们的返回值,则可以使用逗号运算符:

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,可以使用the callback parameter并将一个调用setPage(1)的函数传递给{{1} }:

setOption