在以下代码中,当用户单击“提交”按钮时,应该更新并记录“ Hi”。我尝试使用&&
运算符来完成两个不同的任务。
type === "text" ?
setTodos(updatedText) &&
console.log("HI")
:
console.log(event.target)
}
答案 0 :(得分:1)
调度函数(例如setTodos
)不返回值。
expression1 && expression2
为假, expression1
将解析为expression1
,并且不会求值expression2
。这就是未记录HI
的原因。
由于您没有将结果用作表达式,但是您只打算运行一些声明(运行setTodos
并将内容记录到控制台),此处的条件运算符不是正确的选择。使用if
/ else
代替:
if (type === 'text') {
setTodos(updatedText);
console.log("HI");
} else {
console.log(event.target)
}
从技术上讲,可以使用逗号运算符将其编写为一个大表达式,但是请不要:
type === "text"
? (setTodos(updatedText), console.log("HI"))
: console.log(event.target);