JSX语法

概念:JSX是 JavaScript XML(HTML)的缩写,表示在 JS 代码中书写 HTML 结构

作用:在React中创建HTML结构(页面UI结构)

注意:JSX 并不是标准的 JS 语法,是 JS 的语法扩展,浏览器默认是不识别的,脚手架中内置的 @babel/plugin-transform-react-jsx 包,用来解析该语法。

 JSX中使用js表达式

语法:{ JS 表达式 }

function App() {
  const num = 123
  return (
    <div className="App">
      {num}
    </div>
  );
}

JSX列表渲染

实现:使用数组的 map 方法

function App() {
  let arr = [
    {
      id: 1,
      name: "111",
    },
    {
      id: 2,
      name: "222",
    },
    {
      id: 3,
      name: "333",
    },
  ];
  return (
    <div className="App">
      <ul>
        {arr.map((item) => {
          return <li key={item.id}>{item.name}</li>;
        })}
      </ul>
    </div>
  );
}

export default App;

JSX条件渲染

实现:可以使用 三元运算符 或   逻辑与(&&)运算符

function App() {
  const flag = true;
  return (
    <div className="App">
      {flag ? "1" : "2"}
      <br />
      {flag ? <span>111</span> : <span>222</span>}
    </div>
  );
}

export default App;

JSX样式处理

  • 行内样式 - style
function App() {
  return (
    <div className="App">
      <span style={{ color: "red" }}>显示内容</span>
    </div>
  );
}

export default App;

// 或者

function App() {
  const colorObj = {
    color: "red",
  };
  return (
    <div className="App">
      <span style={colorObj}>显示内容</span>
    </div>
  );
}

export default App;
  • 类名 - className(推荐)
// App.js
import "./App.css";
function App() {
  return (
    <div className="content">
      <span>显示内容</span>
    </div>
  );
}

export default App;

// App.css
.content {
  color: red;
}
  • 类名 - className - 动态类名控制
// App.js
import "./App.css";
function App() {
  const flag = false;
  return (
    <div className={flag ? "name1" : "name2"}>
      <span>显示内容</span>
    </div>
  );
}

export default App;

// App.css
.name1 {
  color: red;
}
.name2 {
  color: green;
}

 JSX嵌入变量作为子元素

当变量是 Number、String、Array类型 时,可以直接显示。
当变量是 null、undefined、Boolean类型 时,内容为空,如果希望可以显示null、undefined、Boolean,那么需要转成字符串。
Object对象类型 不能作为子元素( not valid as a React child)

JSX注意事项 

  1. JSX必须有一个根节点,如果没有根节点,可以使用<></>替代
  2. 所有标签必须形成闭合,成对闭合或者自闭合都可以
  3. JSX中的语法更加贴近JS语法,属性名采用驼峰命名法 class -> className || for -> htmlFor
  4. JSX支持多行(换行),如果需要换行,需使用() 包裹。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值