关于 JSX 你应该知道这些技巧

发布于 2022-09-13 13:40:13 字数 2379 浏览 122 评论 0

实际上,JSX 仅仅只是 React.createElement 函数的语法糖。

<MyButton color="blue" shadowSize={2}>
  点击
</MyButton>

会编译为:

React.createElement(
  MyButton,
  {color: 'blue', shadowSize: 2},
  '点击'
)

如果没有子节点,你还可以使用自闭合的标签形式,如:

// 在HTML中的写法
<div calss="sidebar"></div>

// 下React中的写法
<div className="sidebar" />

指定 React 元素类型

JSX 标签的第一部分指定了 React 元素的类型。

React.createElement(
  'div', // 类型为div的HTML元素
  {className: 'sidebar'},
  null
)
React.createElement(
  MyButton, // 类型为MyButton的React组件
  {color: 'blue', shadowSize: 2},
  '点击'
)

大写字母开头的 JSX 标签意味着它们是 React 组件。这些标签会被编译为对命名变量的直接引用,所以,当你使用 JSX 表达式时,Foo 必须包含在作用域内。

const MyComponents = {
  Foo : function Foo (props) {
    return <div>Foo</div>;
  }
}

// Foo 不在当前作用域内。
<Foo />
function Foo () {
  return <div>Foo</div>;
}

// Foo 在当前作用域内。
<Foo />

在 JSX 类型中使用点语法

在 JSX 中,你也可以使用点语法来引用一个 React 组件。当你在一个模块中导出许多 React 组件时,这会非常方便。

const MyComponents = {
  Foo : function Foo (props) {
    return <div>Foo</div>;
  },
  Bar : function Bar (props) {
    return <div>Bar</div>;
  }
}

<MyComponents.Foo />
<MyComponents.Bar />

用户定义的组件必须以大写字母开头

const obj = {
  Foo : function Foo (props) {
    return <div>Foo</div>;
  },
  Bar : function Bar (props) {
    return <div>Bar</div>;
  }
}

// 错误写法
<obj.Foo />
// 正确写法
let MyComponent = obj.Foo
<MyComponent />

Props 默认值为 True

如果你没给 prop 赋值,它的默认值是 true。以下两个 JSX 表达式是等价的:

<MyTextBox autocomplete />

<MyTextBox autocomplete={true} />

属性展开

如果你已经有了一个 props 对象,你可以使用展开运算符 ... 来在 JSX 中传递整个 props 对象。以下两个组件是等价的:

function App1() {
  return <Greeting firstName="Ben" lastName="Hector" />;
}

function App2() {
  const props = {firstName: 'Ben', lastName: 'Hector'};
  return <Greeting {...props} />;
}

JSX 中的子元素

布尔类型、Null 以及 Undefined 将会忽略。

false, null, undefined, and true 是合法的子元素。但它们并不会被渲染。以下的 JSX 表达式渲染结果相同:

<div />
<div></div>
<div>{false}</div>
<div>{null}</div>
<div>{undefined}</div>
<div>{true}</div>

如数字 0,仍然会被 React 渲染。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

缘字诀

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文