React--jsx

jsx 介绍

jsx 是javascript的语法扩展,虽然看起来像是模板语法,其实内部完全是javascript实现的

react认为渲染逻辑的本质与ui逻辑是一致的: 如何处理事件、如何显示数据与页面如何布局、如何展示页面是同一等级的问题

react不是将标记和逻辑通过拆分文件来解耦合,而是将问题拆分成组件来解耦合

react不是必须使用jsx,但是通过jsx可以更好的获得视觉辅助,以及显示更多有用的错误和警告消息

jsx本质

jsx本质是objects,babel转译器会将jsx转义成 React.createElement(component, props, …children) 的形式,所以在编写组件的时候,需要在头部声明React变量,即使没有被直接调用

jsx标签

jsx中 大写开头的jsx标签才会被React解析成组件, 如果你使用了大写开头的标签,那么就要在作用域中声明它

jsx中嵌入表达式

在jsx中可以使用表达式语法

const name = 'world'
const element = <h1>hello {name}!</h1>
const add = (a, b) => a + b
const num = {
  a: 10,
  b: 2
}

ReactDOM.render(
  <div>
    {element}
    <h2>{2 + 2}</h2>
    <h3>{add(num.a, num.b)}</h3>
  </div>, 
  document.getElementById('root'))

jsx本身就是表达式

这意味着 jsx可以被当做函数参数、当做函数返回值、被赋值给变量、在js的逻辑运算中使用

function getBoolean(bool) {
  if (bool) {
    return <h1>true</h1>;
  }
  return <h1>false</h1>;
}

子代

jsx可以相互嵌套,在包含开始和结束标签的jsx表达式中,通过 props.children 来传递,
props.children可以是字符串、另一个jsx表达式、javascript表达式, 甚至是函数。

当props.children 为 false、null、undefined 和 true,虽然都有效,但是并不会被渲染出来,如有需要,应使用string方法转成字符串显示

JavaScript 中的一些 “falsy” 值(比如数字0),依然会被渲染。 如下,保证 前的表达式为布尔值,即可解决

 <div>
  {props.messages.length > 0 &&
    <MessageList messages={props.messages} />
  }
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值