#yyds干货盘点#React JSX 书写规范
  Qp5JTyIxtbwu 2023年11月19日 24 0

JSX 书写规范

  • JSX 的最外层只能有一个根元素,可以使用 div 、span 等标签
  • 正常情况下,我可以在最外层包裹一个小括号(),方便我们更好的格式化代码
  • JSX 中的标签可以是单标签,也可以是双标签;注意:如果是单标签,必须以/>结尾
  • 在使用变量时,我们可以将其放在一个大括号中,大括号内可以放置任何有效的 JavaScript 表达式

代码示例如下:

const root = (
  <div className="list">
    <div>第一个组件内容!</div>
    <img src="xxx.jpg" />
    {1 === 1 && <div>第二个组件内容!</div>}
  </div>
);

JSX 注释

变量在 JSX 使用,需要用大括号 { } 包裹;注意:使用的变量需要提前定义。如下。

const MyComponent = () => {
  const text = "Hello World!";
  return <div>{text}</div>;
};
export default MyComponent;

JSX 嵌入表达式

  • 运算符表达式
  • 三元表达式
  • 函数调用
const MyComponent = () => {
  const isFinish = true;

  const calc = () => {
    const a = 1;
    const b = 2;
    return a + b;
  };

  return (
    <div>
      {/*1.运算符表达式*/}
      <span>2 + 3 的和为:{2 + 3}</span>
      {/*2.三元表达式*/}
      <span>家庭作业是否完成:{isFinish ? "是" : "否"}</span>
      {/*3.进行函数调用*/}
      <span>{calc()}</span>
    </div>
  );
};
export default MyComponent;

JSX 绑定属性

注意:在给元素绑定 style 时,外层的大括号是表示可传入变量或者表达式。而内部的大括号是一个对象,它里面是键值对,表示元素的样式属性及属性值。另外,当属性是由多个单词组成的时候,需要用驼峰命名法来表示,例如:fontSize

const MyComponent = () => {
  const title = "我是标题的全部内容!";
  const url = "https://www.baidu.com";
  const className = "span";

  return (
    <div>
      {/* 1、绑定普通属性 */}
      <h2 title={title}>我是标题...</h2>
      <a href={url}>百度一下</a>
      {/* 2.绑定class */}
      <span className={className}>我是span标签</span>
      <span className={["tag", "span"].join(" ")}>我是span标签2</span>
      {/* 3.绑定style */}
      <span style={{ color: "red", fontSize: 16 }}>我的字体颜色是红色</span>
    </div>
  );
};
export default MyComponent;

JSX 绑定事件

可以看出 React 元素的事件处理和 DOM 元素的很相似,但存在一些语法上的差异:

  • React 的事件采用驼峰式命名,而不是纯小写的方式
  • 使用 JSX 语法时,需要传入一个函数作为事件处理函数,而不是一个字符串
  • 使用函数时不能加括号,不然会直接执行
  • 如果函数过于简单,可在 JSX 中直接编写函数内容
const MyComponent = () => {
  const onClick = () => {
    window.alert("您点击了按钮1");
  };

  return (
    <div>
      <button onClick={onClick}>按钮1</button>
      <button
        onClick={() => {
          window.alert("您点击了按钮2");
        }}
      >
        按钮2
      </button>
    </div>
  );
};
export default MyComponent;

JSX 条件渲染

常见的条件渲染的方式有以下三种:

  • 方式一:条件判断语句,适合逻辑较多的情况
  • 方式二:三元运算符,适合逻辑比较简单
  • 方式三:与运算符&&,如果条件成立,渲染&&后面的组件;如果条件不成立,则都不渲染
const MyComponent = () => {
  const renderTitle = (key) => {
    if (key > 1) {
      return <span>我是标题1</span>;
    }
    return <span>我是标题2</span>;
  };

  return (
    <div>
      {renderTitle(2)}
      {2 > 1 ? <span>我会显示出来</span> : <span>我会隐藏</span>}
      {2 > 1 && <span>我会显示出来</span>}
    </div>
  );
};
export default MyComponent;

JSX 列表渲染

我们通常使用 Javascript 的 map 函数来处理 JSX 数组列表循环渲染;如下

const MyComponent = () => {
  const array = ["1", "2", "3", "4"];

  return (
    <ul>
      {array.map((i) => (
        <li key={i}>{i}</li>
      ))}
    </ul>
  );
};
export default MyComponent;

注意:在渲染是,我们需要给渲染项添加一个 key,不然会报错:warning: Each child in a list should have a unique "key" prop.

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
Qp5JTyIxtbwu