【问题标题】:Understanding JSX element declaration syntax理解 JSX 元素声明语法
【发布时间】:2020-11-08 12:12:15
【问题描述】:

我见过两种在 JSX 中声明元素的不同方式。

第一个如下所示。

const element = (
  <div>
    ...
  </div>
);

但我也看到了以下元素的声明。

const App = () => (
  <BrowserRouter>
    ...
  </BrowserRouter>
)

这两个元素都可以作为它们的第一个参数传递给 ReactDOM.render()。

但是这两种语法到底有什么区别呢?

【问题讨论】:

    标签: reactjs jsx


    【解决方案1】:

    立即评估第一个。第二个在渲染其父级时进行评估。

    这就是区别

    let y = 1,
      x = y;
    
    y = 2;
    
    console.log(x); // prints 1
    

    let y = 1,
      x = () => y;
    
    y = 2;
    
    console.log(x()); // prints 2
    

    在设计可重用组件时,请使用第二种语法。当您在另一个组件的渲染中返回或包含一个组件时,请使用第一个。

    【讨论】:

    • 这里的 () => () 语法是什么意思?它看起来像一个箭头函数 () => {},但它末尾有括号而不是花括号。
    • 从技术上讲,外括号是没有意义的。唯一需要它们的时候是在 return 语句之后的行开始元素时,因为 JavaScript 不需要以 ; 终止行。当箭头函数没有大括号时,它会将其视为单行返回语句。如果它确实有花括号,它会将其视为常规函数,并且如果需要,则需要 return 语句。
    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多