相关疑难解决方法(0)

为什么在 JSX 中只能使用表达式,而不能使用语句?

在继续之前,我应该提到是的,我已经阅读了关于“在 React JSX 中使用 if 语句”及其在 SO 和其他地方的不同变体的问题和答案。

然而,这些帖子更多的是关于如何在不使用 JSX 中的语句的情况下绕过。我想知道为什么JSX 中不允许使用语句,对此我找不到任何帖子。

我正在阅读关于这个名为“ If-Else in JSX ”的官方文档,给出的原因是,引用,

JSX 只是函数调用和对象构造的语法糖

他们继续对比以下两段代码,其中第一段有效,第二段无效:

这是有效的:

// This JSX: 
ReactDOM.render(<div id="msg">Hello World!</div>, mountNode);
// Is transformed to this JS: 
ReactDOM.render(React.createElement("div", {id:"msg"}, "Hello World!"), mountNode); 
Run Code Online (Sandbox Code Playgroud)

这是无效的:

// This JSX:
<div id={if (condition) { 'msg' }}>Hello World!</div>

// Is transformed to this JS:
React.createElement("div", {id: if (condition) { 'msg' }}, "Hello World!");
Run Code Online (Sandbox Code Playgroud)

我真的很想在幕后了解这一点。首先,在第二个示例中,我从未想过在idHTML 元素的属性中编写 JavaScript 。事实上,这是我第一次看到 id 属性中使用的任何类型的代码。如果我要尝试编写一个 if …

javascript reactjs

5
推荐指数
1
解决办法
267
查看次数

组件的 Gatsby 条件渲染

我有一个这样的模板:

const Template = ({ data }) => {
  const { id } = data.Page
  const postNode = data.Page

  return (
    <Layout>
       // conditional logic here
       // if {id} is 40 output <AdditionalContent />
    </Layout>
  )
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以检查id它是否为40,然后输出<AdditionalContent>组件。

reactjs graphql gatsby

3
推荐指数
1
解决办法
2016
查看次数

在jsx的render函数中编写条件语句

我的状态是{visibilityFilter: "completed"}{visibilityFilter: "todo"}。基于此,我想为一个元素分配类名。像这样

<span {this.state.visibilityFilter=="completed"?className="active":className:""}>Completed</span>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我尝试了各种变化

{<span this.state.visibilityFilter=="completed"?className="active":className:"">Completed</span>}
Run Code Online (Sandbox Code Playgroud)

但是他们都没有工作。我知道,如果我在return语句外创建变量并将其分配为HTML,则它可以工作。像这样,

let classCompleted = this.state.visibilityFilter == "completed"? "active":"";
Run Code Online (Sandbox Code Playgroud)

然后,

<span className={`$(classCompleted)`}></span>
Run Code Online (Sandbox Code Playgroud)

但是我想知道如何在return语句中评估类。

javascript jsx reactjs

0
推荐指数
1
解决办法
588
查看次数

标签 统计

reactjs ×3

javascript ×2

gatsby ×1

graphql ×1

jsx ×1