React优化-JSX模板优化-标签化

什么是JSX

JSX是JavaScrip的一种扩展语法,JSX的标签语法既不是字符串也不是HTML;
从本质上讲,JSX只是为React.createElement(component, props, ...children)函数提供的语法糖。

JSX的痛点(项目开发中遇到的)

写jsx模板的时候,我们遇到循环输出子组件或者标签,需要通过Array.forEach或者for循环输出;判断选择子组件的时候,需要通过if或者三元判断输出;一个模板里面我们会很多逻辑,这些逻辑看起来跟jsx不是很和谐!有没有办法做到标签化,跟jsx语法一致尼?

jsx-control-statements介绍

安装

npm install --save-dev babel-plugin-jsx-control-statements

配置.babelrc

{
  ...
  "plugins": ["jsx-control-statements"]
}

jsx-control-statements语法

If(但是目前不支持Else,这也是可惜的)

// 简单例子
<If condition={ true }>
  <span>IfBlock</span>
</If>

// 使用多个子元素或者表达式
<If condition={ true }>
  one
  { "two" }
  <span>three</span>
  <span>four</span>
</If>

// 转化前
<If condition={ test }>
  <span>Truth</span>
</If>

// 转化后
{ test ? <span>Truth</span> : null }

Choose、When、Otherwise( 相当于switch case defualt)

// 转化前
<Choose>
  <When condition={ test1 }>
    <span>IfBlock1</span>
  </When>
  <When condition={ test2 }>
    <span>IfBlock2</span>
  </When>
  <Otherwise>
    <span>ElseBlock</span>
  </Otherwise>
</Choose>

// 转化后
{ test1 ? <span>IfBlock1</span> : test2 ? <span>IfBlock2</span> : <span>ElseBlock</span> }

For

// 循环输出的时候必须提供key
<For each="item" of={ this.props.items }>
    <span key={ item.id }>{ item.title }</span>
</For>

// 如果数组改变,则使用索引作为键属性是不稳定的
<For each="item" index="idx" of={ [1,2,3] }>
    <span key={ idx }>{ item }</span>
    <span key={ idx + '_2' }>Static Text</span>
</For>

参考

https://github.com/AlexGiller...
JSX 介绍
JSX 深入

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值