首页 > web前端 > js教程 > react项目案例总结

react项目案例总结

小云云
发布: 2018-02-10 15:32:51
原创
3291 人浏览过

刚刚开始写组件的时候,感觉难度不大(跟vue差不多)。最有意思的应该是jsx语法,个人感觉,jsx的功能性确实比vue的template更强,而且可读性更高.

// vue
<p :id="text" :class="{&#39;active&#39;:isActive}" v-text="&#39;hello! &#39; + msg"></p>
登录后复制
// jsx
<p id={text} className={isActive && &#39;active&#39;}>hello !{msg}</p>
登录后复制
  1. 在jsx里面没有指令,而且jsx里面 {} 代表要执行的js语句,它的效果类似 return ,它会有返回值.这样的话,更好理解jsx的内容,jsx里面的dom不是真正的dom,只是一种表示dom的语法,{}里面的内容可以完全理解为js,这种整个jsx就可以完成理解为原生js写的html模版.

  2. 属性计算的部分,vue里面需要在属性名前面加:,在jsx里面则不需要.

  3. 另外,在vue里面的dom的contentText不使用{{}}来渲染,使用因为在vue页面生成之前,模版语法部分没有渲染出来,就会在页面上先出现{{content}},再一闪变成真正的文本内容.

再举个数组遍历渲染的栗子
// vue
<ul>
  <li v-for="(item,index) in list" :key="index" v-if="showItem(item)">
    <span v-text="item.label"></span>
  </li>
</ul>

// vue的methods属性
methods:{
  showItem(item){
    return item.label.indexOf('abc') !== -1
  }
}
登录后复制
// jsx
<ul>
  {list.map((item,index) => {
    return item.label.indexOf('abc') !== -1 && (
      <li key={index}>
        <span>{item.label}</span>
      </li>
    )
  })}
</ul>
登录后复制

你会发现,在一些比较简单渲染需求时,使用vue的template会比较简单直接,而且很易懂.但是如果涉及一些比较复杂的逻辑处理渲染,jsx更直观,因为jsx的语法跟js的差异不大,相当于用js来描述需要如何渲染dom结构.当然jsx并不是说可以完成使用js的语法来写dom,{}里面只能是一个表达式,所以像if else或者switch这种语法在{}是不能用的.

关于组件模版的格式化,在react里面感觉更好一点,因为react组件就是用js写的,格式化和注释部分在编辑器得到更好的支持,但是.vue文件目前还找不到针对的格式化插件.
目前我遇到的问题有2个.

1.组件注释的问题.
在写组件的时候,我比较习惯写注释.在js文件里面,注释会更加的明显和方便,但是在vue文件里面注释感觉就没啥亲和力.

// .vue
<template>
<!--
  这里是注释,而且没有高亮效果.
 -->
</template>
登录后复制
// .js
/**
 * @name
 * @param {Number}
 * @description
 */
登录后复制

这样在js里面的注释就显得非常高大上.

2.dom部分格式化.
vue里面建议dom的每个属性独占一行(也是我的书写习惯),像这样:

// .vue
<p
  id="box1"
  class="classA classB"
  :class="{&#39;active&#39;:isActive}"
></p>
登录后复制

但是,只要一格式化,就...

// .vue
<p id="box1" class="classA classB" :class="{&#39;active&#39;:isActive}"></p>
登录后复制

而jsx里面就不会出现这种情况,只要是换行了,就算格式化也不会出现上述的问题.

相关推荐:

分解React组件的几种进阶方法

React 16.3新特性分析

React 16.3之Context API详解


以上是react项目案例总结的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板