PM开发文档

技术栈

1、es6 语法 参考阮一峰的文档

2、react 官方文档

3、react-router 文档参考

4、react-redux 文档参考

5、fetch 文档参考 或者可以看 中文的一种文档

6、promise 文档参考

7、jsBridge 用于JS和原生webview交互,js执行原生方法功能

Rem

rem 是相对于 html 元素的 font-size 的一个单位。如果 html 上定义了 font-size: 20px;,则无论在任何地方都是 1rem = 20px 这个大小不会受到父元素的影响。

我们统一使用rem对页面进行整体缩放。强烈建议大家对需要适应页面大小的任何元素都使用 rem 为单位来定义。

我们在 iphone6 上使用 1rem = 20px 来换算。

关于Rem可以参考 MDN上的定义

Starts

目前移动版的基础组件在 pmparana-mobile-base工程里

工程由shepherd打包, herd启动,纯前端渲染

整体页面用flex布局,页头页底中间三部分

装修

若designer版本高于或等于0.5.19, eevee的版本高于或等于0.3.0, 装修组件的state可以用数据缓存来实现返回记住位置

            
              oldState = this.props._initState
            
          

配合装修系统,若需要使用react-router的history对象,使用如下

            
              history = this.props.context
            
          

Header(导航栏)

Header 在PM里调用方式 require("pm/header")

            
              <Header goback={ this.props.callBack } type="secondary">标题</Header>
            
          

可传参数

参数 说明
goback 若有则会有返回按钮,goBack接受一个function
type 若不传则为第一种样式,若传必传“secondary”是第二种样式
className 自定义class

Buttons(按钮)

Button 在PM里调用方式 require("pm/button")

            
              <Button>主按钮</Button>
              <Button onClick={this.btnClick} type="secondary">次按钮</Button>
              <Button type="info">更次钮</Button>
              <br />
              <Button type="small">主小按钮</Button>
              <Button onClick={this.btnClick} type="secondary" className="btn-small">次小按钮</Button>
              <Button type="info" className="btn-small">更次小钮</Button>
              <br />
              <Button type="danger">Danger</Button>
              <Button disabled>Disabled</Button>
              <Button type="warning">Warning</Button>
              <Button htmlType="submit" type="success">Success</Button>
              <br />
              <Button type="large">大按钮</Button>
              <div className="btn-group">
                <Button type="warning">次按钮</Button>
                <Button>主按钮</Button>
              </div>
            
          

可传参数

参数 说明
disabled 若传入disabled, 按钮不可点
htmlType 可传入button的type
className 自定义class
onClick function 点击按钮触发的方法
其他 其他自定义props

Grids(网格)

Row、Col 在PM里调用方式 require("pm/row") require("pm/col")

            
              <Row>
                <Col span={2}>.col-2</Col>
                <Col span={2}>.col-2</Col>
                <Col span={2}>.col-2</Col>
                <Col span={2}>.col-2</Col>
                <Col span={2}>.col-2</Col>
                <Col span={2}>.col-2</Col>
              </Row>
              <Row>
                <Col span={4}>.col-4</Col>
                <Col span={8}>.col-8</Col>
              </Row>
              <Row>
                <Col span={4}>.col-4</Col>
                <Col span={4}>.col-4</Col>
                <Col span={4}>.col-4</Col>
              </Row>
              <Row>
                <Col span={6}>.col-6</Col>
                <Col span={6}>.col-6</Col>
              </Row>
              <Row>
                <Col span={4}>.col-4</Col>
                <Col span={4} offset={4}>.col-4</Col>
              </Row>
              <Row>
                <Col span={3} offset={3}>.col-3</Col>
                <Col span={3} offset={3}>.col-3</Col>
              </Row>
              <Row>
                <Col span={6} offset={2}>.col-6 </Col>
              </Row>
            
          

Col可传参数

参数 说明
span col的宽度百分比,可传1~12,宽度百分比依次增大
offset col的margin-left百分比,可传0~12,依次增大;margin-left最小为0,最大为100%

Tabs(标签栏)

Tabs 在PM中,调用方式 require("pm/tab")

            
              <Tab activeKey="1" onChange={this.callback} >
                <div tab="选项卡一" key="1"></div>
                <div tab="选项卡二" key="2"></div>
                <div tab="选项卡三" key="3"></div>
              </Tab>
              <Tab activeKey="2" type="card" onChange={this.callback} >
                <div tab="选项卡一" key="1"></div>
                <div tab="选项卡二" key="2"></div>
                <div tab="选项卡三" key="3"></div>
              </Tab>
            
          

可传参数

参数 说明
onChange function 传入方法,当切换时触发,会将当前项的key传入
activeKey 当前为active的项的key
className 自定义class
key 传入一个参数,当切换时将此参数返回给onChange方法
其他 其他自定义props

Search(搜索栏)

搜索包含两部分,一部分是搜索框,还有一部分是弹出层,弹出层内将出现推荐搜索词,历史搜索词

历史搜索词存于本地localStroge,右侧样例即可展示

            
              <SearchInput className="search-center-content" onClick={this.handleOnClick.bind(this)} readOnly="true"/>
              <SearchFilter isHide={this.state.searchFilterHide} onClick={this.handleOnClick.bind(this)}/>
            
          

SearchInput可传参数

参数 说明
disabled 该组件是否可编辑 (readOnly在safari和chrome中 设置后还是可编辑的状态)
onClick 该组件的点击事件 显示SearchFilter
className 自定义class
defaultValue 该组件的初始值
callBack 回调函数由SearchFilter组件传入,触发表单提交之后执行该方法

SearchFilter可传参数

参数 说明
isHide 该组件是否可见
onClick 该组件的点击事件 隐藏SearchFilter
callBack 回调函数:提供给SearchInput组件的form表单提交

Form(表单)

若使用pm的Form组件,配合pm的Input组件,可简便的完成输入校验和提交取值,以下为示例

            
              <Form onSubmit={this.handleSubmit.bind(this)} ref="exampleForm">
                <Input label="单行" placeholder="文字提示" type="text" />
                <InputDatePicker label="日期" placeholder="请选择日期"/>
                <FormGroup>
                  <Input onChange={this.onInputChange}name="name"  ref="input1" label="账号" placeholder="请输入账号" type="text" ref="username" defaultValue="buyer" pattern="^[\d_a-zA-Z\u4E00-\u9FA5]{5,25}$" required />
                  <Input label="邮箱" ref="input2" name="email" placeholder="请输入邮箱" type="text" />
                  <Input label="密码" ref="input3" name="password" placeholder="请输入密码" type="password" />
                </FormGroup>
                <Button htmlType="submit" className="btn -large">提交</Button>
              </Form>
            
          

可传参数

参数 说明
className 自定义class
handleSubmit function, 该方法用于表单提交,将接收两个参数, 第一个是evt表单本身对象, 第二个是formData对象(表单输入内容),若表单的校验完全通过,则会call该方法。
其他 其他form标签默认的props

Input

Input 组件可自动完成校验,不需要开发人员再次在change事件校验, 目前的版本若要使用Input组件必须在PM的Form组件下

            
              <Input onChange={this.onInputChange}name="name"  ref="input1" label="账号" placeholder="请输入账号" type="text" ref="username" defaultValue="buyer" pattern="^[\d_a-zA-Z\u4E00-\u9FA5]{5,25}$" required />
            
          

可传参数

参数 说明
className string, 自定义class
onChange function, 若当输入框内容变化需要其他操作,则可多传入onChange发起
defaultValue input的默认值
value input的当前值
name 若需要校验或提交表单时需要获取数字,则该字段必填
pattern 校验字段,该参数可传可不传,可以传入function也可传入正则表达式,若传入校验方法,该方法须在最后return true或者false 表示校验结果,该function可接收到value参数, 若传入正则表达式,则自动校验
type string, 若传入pattern,则默认校验规则无效,若不传入pattern,type为特殊类型,例如num,tel,email,则会根据type类型进行校验。ps: 若传入tel,则手机号,座机号,区号+座机号+分机号均可通过校验
required 该属性标识是否必填,若属性不仅需要正确的格式还需必填,则使用该属性即可
errorCallback function, 可自定义输入错误的后续操作,回调该方法时,会传入当前校验错误的input list
errorTip 非必传,string, 若校验失败需要给用户明确的提示,则可传入该属性。 默认提示为请输入正确格式。但是若传入了errorCallback ,则该参数无效
emptyTip 非必传,string, 若需必填的输入框未填入内容时需要给用户明确的提示,则可传入该属性, 若不传默认提示为请输入内容,但是若传入了errorCallback ,则该参数无效
其他 其他input标签默认的props

Switch(开关)

Switch 在PM中,调用方式 require("pm/switch")

            
              <Switch checked="true" defaultChecked="false"
              onChange={ this.switchOnChange } />
            
          

可传参数

参数 说明
checked 控制switch的状态,true为打开、false为关闭;非必传
defaultChecked 控制switch的默认状态,非必传;与checked的区别:
同时传入时,switch的开关由checked控制
都不传入时,switch的开关默认关闭
onChange 必传,当切换开关时执行的回调函数
其他 其他自定义的props

Toast

            
            
          

inputDatePicker(日期选择器)

input类型的时间选择器 在PM中
调用方式:require("pm/inputDatePicker")

            
              <InputDatePicker className="date-picker" label="日期" placeholder="请选择日期" defaultValue="1993-07-19"/>
            
          

可传参数

参数 说明
className 自定义class
label 该日期选择器的名称
placeholder 无“默认选择的日期”时显示的内容
defaultValue 默认选择的日期
其他 其他自定义的props

Nav(底部)

            
            
          

returnTop

returnTop 返回顶部组件 无需传参数,直接调用

            
              <returnTop />
            
          

modal(弹窗)

在common中,调用方式:require('common/modal')

弹窗打开方式:PubSub.publish("showModal");
弹窗关闭方式:PubSub.publish("closeModal"); 如右可模拟操作。

按钮显示:
1. 仅title:    居中的“title”按钮
2. 仅detail:“detail”按钮 及 “关闭”按钮
3. 都传时: “detail”按钮 及 “title”按钮
4. 都不传时: 居中的“关闭”按钮

按钮回调:
leftClick:左边按钮点击的回调
rightClick:右边按钮点击的回调以及一个按钮时的回调
exit:当上面两个参数不传时,由必传的exit执行按钮的点击回调

            
              <Modal detail="返回首页" title="查看订单"
              hideOverlay="false"
              iconClass="icon-newpm-finger-copy success"
              leftClick={this.props.leftClick}
              rightClick={this.props.rightClick}
              exit={this.close.bind(this)}>
              { this.props.children } </Modal>
            
          

可传参数

参数 说明
className 自定义class 控制内部内容children的
detail 左边按钮的名称,非必传
title 右边按钮的名称,非必传
hideOverlay 弹窗后面的蒙层;为true时隐藏蒙层,反之则显示蒙层
iconClass 头部的图标以及图标颜色,若不传则没有图标
leftClick 左边按钮点击的回调函数
rightClick 右边按钮点击的回调函数或一个按钮时的点击回调
exit 当leftClick与rightClick参数不传时,为必传;点击按钮默认执行的回调函数

popup(弹框)

在common中 调用方式 require("common/popup")

弹框打开方式:PubSub.publish("popup.show");
弹框关闭方式:PubSub.publish("popup.close");

            
              <Popup className="popup" headerTitle="这是头部" headerHide="false">这是弹框中的内容</Popup>
            
          

可传参数

参数 说明
className 自定义class
headerHide 是否显示header,true不显示,false显示,不传为显示
headerTitle header的标题

CommentStar(星评)

在common中 调用方式 require("common/comment_star")

            
              <CommentStar starType="get" stars={3} max={5}/>
              <CommentStar starType="set" defaultStyle="fill" max={5}/>
            
          

可传参数

参数 说明
className 自定义class
starType 必传,可传参数为set与get
set模式:即用户发表评价时可通过点击设置等级
get模式:即用户浏览评价时的星星等级;通过获取stars参数的值,设置选中的数量
max 评价等级星星的个数
defaultStyle set模式下,可以设置为fill或空,分别表示默认以全选中或全不选状态显示
stars get模式下,设置选中星星的数量
max 表示星评所以星星的个数
其他 其他自定义的props