ReactJs 中的 AND 运算符

AND operator in ReactJs

在使用 AND 运算符计算第 6 行中的表达式时,

1. export default function App() {
2.  var isDone = false;
3.  const strikethrough = { textDecoration: "line-through" };
4.  return (
5.    <div className="App">
6.      <h1 style={isDone && strikethrough}>Hello CodeSandbox</h1>
7.    </div>
8.   );
9. }

isDone = false时, 我收到一个错误

'The style prop expects a mapping from style properties to values, not a string. For example, style={‌{marginRight: spacing + 'em'}} when using JSX.

isDone = true 时一切正常。

null 无法正常工作,为了检查这一点,我使用了以下内容

<h1 style={}>Hello CodeSandbox</h1>

这给出了一个错误 'JSX attributes must only be assigned a non-empty expression'

我正在通过在线课程学习 ReactJs。这里发生了什么?

尝试控制台记录您的情况。

你应该有这个代码:

<h1 style={isDone ? strikethrough : undefined}>

<h1 style={isDone ? strikethrough : {}}>

const isDone = true
const strikethrough = 'yes' // or { textDecoration: "line-through" }

console.log(isDone && strikethrough) // return 'yes'

VS

const isDone = false
const strikethrough = 'yes'

console.log(isDone && strikethrough) // return boolean false

问题是您的 style 道具不接受布尔值。

更多。

如果您使用 typescript,您可以检查 h1 标签的 props

有个className?: string;是意思string or nothing.

所以,你不能从 isDone && strikethrough 传递布尔值(return false)。

正如您已经知道的那样,您不能分配非空表达式。所以你需要做类似

的事情
<h1 style={isDone ? strikethrough : {}}>Hello CodeSandbox</h1>

为了有默认样式。