2.3.137 • Published 2 years ago

suo-mobile v2.3.137

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

组件开发手册

1. 安装和编译方法

# 安装依赖包
$ npm i

# 启动开发服务器
$ npm start

# 编译生成文档
$ npm run docs:build

#编译生成组件
$ npm run build

2. JS 编码规范

2.1 图片引用方式

图片必须使用外部链接方式,不要内嵌 base64 或者 svg 代码。

# 正确
import newIcon from '@/Img/icon-new.svg';

<div>
  <img src={newIcon} />
</div>


# 错误
<div>
  <svg>
    <path d="M299.776 997.568a90.592 ...." />
  </svg>
</div>

2.2 条件样式

尽量不要将 css 代码写到 react 里面

// 错误
const dataStateColor = [
  ['#F4E8DF', '#EF8839'],
  ['#DFEFE5', '#33C669'],
  ['#EAEAEA', '#999999'],
  ['#F6DBDB', '#FF1515'],
];

<Tag className="text-color"
  style={{
    backgroundColor:
      item?.dataStatus < 4
        ? dataStateColor[item?.dataStatus][0]
        : dataStateColor[0][0],
    color:
      item?.dataStatus < 4
        ? dataStateColor[item?.dataStatus][1]
        : dataStateColor[0][1],
  }}
>
  {desc}
</Tag>


// 正确
.state-color-0 { backgroundColor: #F4E8DF; color: #EF8839; }
.state-color-1 { backgroundColor: #DFEFE5; color: #33C669; }
.state-color-2 { backgroundColor: #EAEAEA; color: #999999; }
.state-color-3 { backgroundColor: #F6DBDB; color: #FF1515; }

<Tag className={`state-color-${(item?.dataStatus<4)?item?.dataStatus:0}`} >
  {desc}
</Tag>

2.3 图片命名规则

对于图标使用 icon- 头,对于图片使用 img- 头。

  • 图标:小于 128px 的图像
  • 图片:大于 128px 的图像

2.4 SVG 条件色彩

对于不同条件选择不同的 svg 图标颜色,不要使用内嵌的 svg 代码,可以使用条件选择图片对象。

# 错误
<svg
  t="1636686053617"
  className="icon"
  viewBox="0 0 1024 1024"
  version="1.1"
  xmlns="http://www.w3.org/2000/svg"
  p-id="1648"
  width="16"
  height="16"
>
  <path
    d="M299.776 997.568a90.592 90.592 0 0 1-125.632-30.656 92.8 92.8 0 0 1-10.752-68.928l55.776-237.888a15.776 15.776 0 0 0-4.832-15.424L31.744 485.568a92.8 92.8 0 0 1-9.888-129.28 90.816 90.816 0 0 1 62.08-32l239.616-19.52a14.4 14.4 0 0 0 12.032-9.12l92.192-225.952a90.784 90.784 0 0 1 168.416 0l92.32 225.792a14.368 14.368 0 0 0 12.032 9.12l239.648 19.52a92.288 92.288 0 0 1 52.192 161.408l-182.592 159.104a15.744 15.744 0 0 0-4.832 15.424l55.776 237.888a92.032 92.032 0 0 1-67.36 110.656 90.336 90.336 0 0 1-69.024-11.072l-205.184-127.488a13.568 13.568 0 0 0-14.4 0l-205.184 127.488z"
    fill="#BDC1C9"
    p-id="1649"
    fill={collecting ? '#EF8839' : '' + '#BDC1C9'}
  />
</svg>


# 正确
import icon_color_a from 'img/icon_color_a'
import icon_color_b from 'img/icon_color_b'


{collecting ? <img src={icon_color_a}/> : <img src={icon_color_b}/>  }

2.5 事件处理

  • 页面的事件处理尽量使用纯函数,不要使用匿名函数,建议使用箭头函数。
  • 页面的事件函数传递参数时,可以用 bind 函数传递内部变量。
# 错误
<div
  onClick={(e) => {
    e.stopPropagation();
    onActivitySkip(item);
  }}
  className={classnames('activity-size', {
    show: !item?.busiTitle,
  })}
>

# 正确
const doActSkip = (item,e) =>{
  e.stopPropagation();
  onActivitySkip(item);
}

<div
  onClick=doActSkip.bind(this,item)
  className={classnames('activity-size', { show: !item?.busiTitle })}
>

2.6 触发区域多次定义

对于 dom 对象的父子元素不要重复定义 处理事件的函数 ,用合适的 CSS 处理触发的范围。

# 错误
<div className="comment" onClick={doCommon.bind(this)} >
  <img src={icon_comment_c} />
  &nbsp;{commentCount < 1 ? '' : commentCount}
  <div className="hotspot-comment" onClick={doCommon.bind(this)} />
</div>

.comment {
  position: relative;
}
.hotspot-comment {
  width: 34px;
  height: 34px;
  position: absolute;
  top: -7px;
  right: 0px;
}


# 正确
<div className="comment" onClick={doCommon.bind(this)} >
  <img src={icon_comment_c} />
  {commentCount < 1 ? '' : commentCount}
</div>

.comment {
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
}

3. CSS 编码规范

3.1 组件和对象命名

  • 组件命令使用 ss 开头, PC 端组件用 ssp,移动端组件使用 ssm
  • 组件内部的一类子元素用 g 命名,表示全局对象
  • 全局对象内部的组件使用 m 命名,表示模块
  • 模块内部的小部件使用 u 命名,表示单元
  • 对于函数以 fn 命名
.ssm-circles-item {

  .g-msg {
    ...

    .m-lt { ... }

    .m-rt { ... }

    .u-color {
      color: #2c7ef8;
    }

  }

  .g-title { ... }

  .g-circle { ... }

  .g-operate { ... }

  .g-comments { ... }

  .fn-hide {
    display: none!important;
  }
}


return (
    <div className="ssm-circles-item">
      {item && (
        <>
          <div className="g-msg">
            <div className="m-lt">...</div>
            <div className="m-rt">...</div>
          </div>

          <div className="g-title" >...</div>

          {item?.images.length ? (
            <div className="g-circle">...</div>
          ) : null}

          <div className="g-operate">...</div>
          <div className="g-comments" >...</div>
        </>
      )}
    </div>
  )

3.2 classnames

使用 classnames 库连接的类尽量写到一起,并且用 & 符号。

<div className={classnames('m-lt', {
    'u-color': !item?.busiTitle,
  })} >


.m-lt {
  ....

  &.u-color {
    ....
  }
}

3.3 多行代码层级

书写多行 dom 结构代码时,不要将对象结束符 > 写到与开始符 < 相同的层级,否则会影响代码的可读性,即无法折叠。

# 错误
<div className={classnames('g-comments', {
        hide: !likeFriend.length && !commentNews.length,
      })}
>

# 正确
<div className={classnames('g-comments', {
        hide: !likeFriend.length && !commentNews.length,
      })} >

# 正确
<div className={classnames('g-comments', {
        hide: !likeFriend.length && !commentNews.length,
      })}
  >

3.4 对象属性书写顺序

在书写对象的属性时,先写类名,再写其他属性,最后写函数方法。保证在折叠代码后,可以看到类名。

# 错误
<Image onClick={giveALike.bind(this)}
    className="m-icon-head"
    src={critic?.fromUserAvatar || avatarPng}
    fit="cover"
  />


# 正确
<Image className="m-icon-head"
    src={critic?.fromUserAvatar || avatarPng}
    fit="cover"
    onClick={giveALike.bind(this)}
  />
0.3.1-beta.0

2 years ago

2.3.137

2 years ago

0.2.95

3 years ago

0.2.94

3 years ago

0.2.93

3 years ago

0.2.92

3 years ago

0.2.91

3 years ago

0.2.90

3 years ago

0.2.85

3 years ago

0.2.84

3 years ago

0.2.83

3 years ago

0.2.82

3 years ago

0.2.81

3 years ago

0.2.80

3 years ago

0.2.89

3 years ago

0.2.87

3 years ago

0.2.86

3 years ago

0.2.74

3 years ago

0.2.73

3 years ago

0.2.72

3 years ago

0.2.71

3 years ago

0.2.70

3 years ago

0.2.79

3 years ago

0.2.78

3 years ago

0.2.77

3 years ago

0.2.76

3 years ago

0.2.75

3 years ago

2.3.136

3 years ago

2.3.134

3 years ago

0.2.27

3 years ago

0.2.26

3 years ago

0.2.24

3 years ago

0.2.63

3 years ago

0.2.107

3 years ago

0.2.62

3 years ago

0.2.106

3 years ago

0.2.61

3 years ago

0.2.60

3 years ago

0.2.69

3 years ago

0.2.68

3 years ago

0.2.67

3 years ago

0.2.66

3 years ago

0.2.65

3 years ago

0.2.64

3 years ago

0.2.52

3 years ago

0.2.51

3 years ago

0.2.50

3 years ago

0.2.59

3 years ago

0.2.58

3 years ago

0.2.57

3 years ago

0.2.56

3 years ago

0.2.55

3 years ago

0.2.54

3 years ago

0.2.53

3 years ago

0.2.41

3 years ago

0.2.40

3 years ago

0.2.49

3 years ago

0.2.48

3 years ago

0.2.47

3 years ago

0.2.46

3 years ago

0.2.45

3 years ago

0.2.44

3 years ago

0.2.43

3 years ago

0.2.42

3 years ago

0.2.39

3 years ago

0.2.30

3 years ago

0.2.38

3 years ago

0.2.37

3 years ago

0.2.36

3 years ago

0.2.35

3 years ago

0.2.34

3 years ago

0.2.33

3 years ago

0.2.32

3 years ago

0.2.31

3 years ago

0.2.29

3 years ago

0.2.28

3 years ago

0.2.22

3 years ago

0.2.21

3 years ago

0.2.20

3 years ago

0.2.19

3 years ago

0.2.18

3 years ago

0.2.17

3 years ago

0.1.7-6.1

3 years ago

0.1.7-6.2

3 years ago

0.1.7-6.3

3 years ago

0.1.7-6.4

3 years ago

0.2.16

3 years ago

0.2.15

3 years ago

0.2.14

3 years ago

0.2.13

3 years ago

0.2.12

3 years ago

0.2.11

3 years ago

0.2.10

3 years ago

0.1.96

3 years ago

0.1.97

3 years ago

0.1.98

3 years ago

0.1.99

3 years ago

0.1.90

3 years ago

0.1.91

3 years ago

0.1.92

3 years ago

0.1.93

3 years ago

0.1.94

3 years ago

0.1.95

3 years ago

0.1.85

3 years ago

0.1.86

3 years ago

0.1.87

3 years ago

0.1.88

3 years ago

0.1.89

3 years ago

0.1.80

3 years ago

0.1.81

3 years ago

0.1.82

3 years ago

0.1.83

3 years ago

0.1.84

3 years ago

0.1.74

3 years ago

0.1.75

3 years ago

0.1.76

3 years ago

0.1.77

3 years ago

0.1.78

3 years ago

0.1.79

3 years ago

0.1.70

3 years ago

0.1.71

3 years ago

0.1.72

3 years ago

0.1.73

3 years ago

0.1.66

3 years ago

0.1.67

3 years ago

0.1.68

3 years ago

0.1.69

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.2.7

3 years ago

0.2.6

3 years ago

0.2.9

3 years ago

0.2.8

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.1.55

3 years ago

0.1.56

3 years ago

0.1.57

3 years ago

0.1.58

3 years ago

0.1.59

3 years ago

0.1.63

3 years ago

0.1.64

3 years ago

0.1.65

3 years ago

0.1.60

3 years ago

0.1.61

3 years ago

0.1.62

3 years ago

0.0.7-5.21

4 years ago

0.0.7-5.22

4 years ago

0.0.7-5.20

4 years ago

0.0.7-5.25

4 years ago

0.0.7-5.23

4 years ago

0.0.7-5.24

4 years ago

0.0.7-5.10

4 years ago

0.0.7-5.14

4 years ago

0.0.7-5.12

4 years ago

0.0.7-5.13

4 years ago

0.0.7-5.18

4 years ago

0.0.7-5.16

4 years ago

0.0.9-6.1

3 years ago

0.0.7-5.17

4 years ago

0.1.10

3 years ago

0.1.11

3 years ago

0.1.12

3 years ago

0.1.13

3 years ago

0.1.14

3 years ago

0.1.15

3 years ago

0.0.7-5.9

4 years ago

0.0.7-5.7

4 years ago

0.0.7-5.8

4 years ago

0.0.7-5.5

4 years ago

0.0.7-5.6

4 years ago

0.0.7-5.3

4 years ago

0.0.7-5.4

4 years ago

0.0.7-5.1

4 years ago

0.0.7-5.2

4 years ago

0.1.52

3 years ago

0.0.84

4 years ago

0.1.53

3 years ago

0.1.54

3 years ago

0.0.86

4 years ago

0.0.87

4 years ago

0.0.88

3 years ago

0.0.80

4 years ago

0.0.81

4 years ago

0.1.50

3 years ago

0.0.82

4 years ago

0.1.51

3 years ago

0.0.83

4 years ago

0.1.49

3 years ago

0.1.41

3 years ago

0.0.73

4 years ago

0.1.42

3 years ago

0.0.74

4 years ago

0.1.43

3 years ago

0.0.75

4 years ago

0.1.44

3 years ago

0.0.76

4 years ago

0.1.45

3 years ago

0.0.77

4 years ago

0.1.46

3 years ago

0.0.78

4 years ago

0.1.47

3 years ago

0.0.79

4 years ago

0.1.48

3 years ago

0.0.70

4 years ago

0.0.71

4 years ago

0.1.40

3 years ago

0.0.72

4 years ago

0.1.38

3 years ago

0.1.39

3 years ago

0.1.30

3 years ago

0.0.62

4 years ago

0.1.31

3 years ago

0.0.63

4 years ago

0.1.32

3 years ago

0.0.64

4 years ago

0.1.33

3 years ago

0.0.65

4 years ago

0.1.34

3 years ago

0.0.66

4 years ago

0.1.35

3 years ago

0.0.67

4 years ago

0.1.36

3 years ago

0.0.68

4 years ago

0.1.37

3 years ago

0.0.69

4 years ago

0.0.60

4 years ago

0.0.61

4 years ago

0.1.27

3 years ago

0.1.20

3 years ago

0.1.21

3 years ago

0.1.22

3 years ago

0.0.54

4 years ago

0.1.23

3 years ago

0.0.55

4 years ago

0.1.24

3 years ago

0.0.56

4 years ago

0.1.25

3 years ago

0.1.26

3 years ago

0.0.58

4 years ago

0.1.16

3 years ago

0.1.17

3 years ago

0.0.7-5.60

3 years ago

0.0.7-5.55

3 years ago

0.0.7-5.52

3 years ago

0.0.7-5.53

3 years ago

0.0.7-5.56

3 years ago

0.0.7-5.57

3 years ago

0.0.7-5.50

3 years ago

0.0.7-5.51

3 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.0.9-4.1

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.0.9-4.2

3 years ago

0.1.9

3 years ago

0.0.9-4.3

3 years ago

0.1.3

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.0.7-5.43

4 years ago

0.0.7-5.44

4 years ago

0.0.7-5.41

4 years ago

0.0.7-5.42

4 years ago

0.0.7-5.47

4 years ago

0.0.7-5.45

3 years ago

0.0.7-5.46

4 years ago

0.0.7-5.40

4 years ago

0.0.95

3 years ago

0.0.7-5.32

4 years ago

0.0.96

3 years ago

0.0.7-5.33

4 years ago

0.0.7-5.30

4 years ago

0.0.7-5.31

4 years ago

0.0.99

3 years ago

0.0.7-5.34

4 years ago

0.0.7-5.35

4 years ago

0.0.90

3 years ago

0.0.91

3 years ago

0.0.92

3 years ago

0.0.93

3 years ago

0.0.94

3 years ago

0.0.40

4 years ago

0.0.42

4 years ago

0.0.43

4 years ago

0.0.44

4 years ago

0.0.45

4 years ago

0.0.46

4 years ago

0.0.3-1.4

4 years ago

0.0.47

4 years ago

0.0.3-1.3

4 years ago

0.0.2-5.8

4 years ago

0.0.30

4 years ago

0.0.31

4 years ago

0.0.32

4 years ago

0.0.33

4 years ago

0.0.34

4 years ago

0.0.35

4 years ago

0.0.36

4 years ago

0.0.5-1.3

4 years ago

0.0.5-1.2

4 years ago

0.0.5-1.1

4 years ago

0.0.3-1.2

4 years ago

0.0.3-2.9

4 years ago

0.0.2-6.2

4 years ago

0.0.2-6.1

4 years ago

0.0.50

4 years ago

0.0.48

4 years ago

0.0.49

4 years ago

0.0.25

4 years ago

0.0.26

4 years ago

0.0.27

4 years ago

0.0.22

4 years ago

0.0.23

4 years ago

0.0.24

4 years ago

0.0.21

4 years ago

0.0.20

4 years ago

0.0.19

4 years ago

0.0.18

4 years ago

0.0.17

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.13

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago