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