React入门-JSX与元素渲染

什么是JSX

const element = <h1>Hello, world!</h1>;

        以上标签语法既不是字符串也不是 HTML,它被称为 JSX,是一个 JavaScript 的语法扩展。JSX 有点类似模板语言,但它具有 JavaScript 的全部功能。JSX 可以生成 React “元素”。

        JSX 标签里可以包含很多子元素:

const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

JSX中嵌入表达式

const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;

        在 JSX 语法中,可以在大括号内放置任何有效的 Javascript 表达式:

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}!  </h1>
);

JSX也是表达式

        JSX也是一个表达式,可以在JavaScript方法中调用:

function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;  
  }
  return <h1>Hello, Stranger.</h1>;
}

JSX中指定属性

        可以通过使用引号,来将属性值指定为字符串字面量:

const element = <a href="https://www.reactjs.org"> link </a>;

        也可以使用大括号,来在属性值中插入一个 JavaScript 表达式:

const element = <img src={user.avatarUrl}></img>;

        在属性中嵌入 JavaScript 表达式时,不能在大括号外面加上引号。应该仅使用引号(对于字符串值)或大括号(对于表达式)中的一个,对于同一属性不能同时使用这两种符号。

        因为 JSX 语法上更接近 JavaScript 而不是 HTML,所以 React DOM 使用 camelCase(小驼峰命名)来定义属性的名称,而不使用 HTML 属性名称的命名约定。

        例如,JSX 里的 class 变成了 className,而 tabindex 则变为 tabIndex

元素渲染

        调用 createRoot 方法创建根节点,再调用 render 方法在根节点下渲染元素:

import { createRoot } from "react-dom/client";

const element = <h1>Hello, world</h1>;
const container = document.getElementById("root");
const root = createRoot(container);
root.render(element);

        元素的更新,修改上诉代码,添加计时器功能:

import { createRoot } from "react-dom/client";

const container = document.getElementById("root");
const root = createRoot(container);

function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  root.render(element);
}
setInterval(tick, 1000);

        运行代码可以发现只有时间部分再变化:

         React 只更新它需要更新的部分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_老杨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值