1:先执行npm install 然后执行 npm run web-init  配置完后 在执行 npm run web-start(注意的是不要根据文档执行

yarn add -D @jdreact/jdreact-core-web

2:本地获取用户信息:在 index.tpl.vm文件中修改

window.GLOBAL_CONFIG 的pin:

注意的是,最后要改回来!!

    (function() {
window.GLOBAL_CONFIG = {
pin : "$!pin",
sid: "$!sid",
};
}())

3:调用后端接口,需在 http://color.jd.com,根据右上角 文档 ,按照步骤一步步来:

然后审批之后,申请后端授权,

4:访问数据链接:

http://beta-api.m.jd.com/client.action?appid=youka_H5&functionId=getAllBrandOilCardList&body=%7B%22source%22%3A2%2C%22userPin%22%3A%22jd035a84%22%2C%22callId%22%3A%22a6fd7c4e-36a7-f746-6e9d-58a3c9f93d91%22%7D&client=youka_H5&clientVersion=1.0.0&jsonp=jsonp_1519723730909_85518

注意先登录,且登录人和所传的user_pin一致

5:输入框 让其主动获取焦点的时候,需要注意的是防止按钮的冒泡事件,导致光标闪烁一下然后离开输入框,因为JDReact中的onPress事件不是click事件;

_clearContact(event){
event.preventDefault();
document.querySelector('input').focus(); /*setTimeout(function(){
document.querySelector('input').focus();
},0);*/
},

这两种方法均可!

6:web与手机端的获取refs不同:

Platform.OS == 'web' ? this.refs.telInput.refs.input.blur() : this.refs.telInput.blur();

7:转成H5之后 带有间隔的电话输入框出现问题,(用单独的页面复现一下这个问题)

setTimeout(()=>{
Platform.OS == 'web' ? this.refs.telInput.refs.input.blur() : this.refs.telInput.blur();
},100);

8:改变title

    componentDidMount(){
if(Platform.OS == 'web'){
setTimeout(function(){
console.log(document.querySelector('.jd-header-new-title'));
document.querySelector('.jd-header-new-title').innerHTML='加油卡充值';
},100); }
},

9:路由分平台书写

if(Platform.OS == 'web'){
this.context.router.push('index',{'tels': JSON.stringify(encodeURIComponent(telNUm))});
}else{
this.context.router.push(
{ routeName: 'index',props:{tels:telNUm}}//下一个页面的
)
}

其中web端:对象数据传递时,需要JSON.stringify(), 接收数据时,需要JSON.parse(decodeURIComponent(this.props.datas)),

基本数据类型传递和接收的时候不用转
const {productName, productId} = Platform.OS === 'web' ? JSON.parse(decodeURIComponent(this.props.datas)) : this.props.datas;
10:字符串和boolean的区分
11:数据传递和保存用AsyncStorage
https://reactnative.cn/docs/0.51/asyncstorage.html#content
12:JDTouchable使得点击之后的样式发生变化,(如果不设置边框宽度的话):
代码为:

optWrapper: {
justifyContent: 'center',
alignItems: 'center',
flex:1,
height: JDDevice.getRpx(118),
borderRightWidth: JDDevice.getDpx(1),
borderBottomWidth: JDDevice.getDpx(1),
borderColor: '#ececec',
},

应该给border设置宽度为0:

optWrapper: {
justifyContent: 'center',
alignItems: 'center',
flex:1,
height: JDDevice.getRpx(118),
borderRightWidth: JDDevice.getDpx(1),
borderBottomWidth: JDDevice.getDpx(1),
borderTopWidth: JDDevice.getDpx(0),
borderLeftWidth: JDDevice.getDpx(0),
borderColor: '#ececec',
},

样式为:

13:修改配置文件

publicPath: 'static.360buyimg.com/exploit/youka/build-web/',

 14:iphone 5 se 对max-height 以及 div不设置固定的高度和宽度就不是块级别的元素
对于max-height必须放在 JDScrollView上,而不能放在view上
 
15:<JDScrollView>不能和<JDConfirmDialog>合用,否则点击JDConfirmDialog中的input输入框时,iphone5 se中会在键盘前增加一块白块
 
16:去掉生成的js文件的hash值,避免一直改动名称,方便调试:在文件webpack.donfig.prod.js中去掉hash

output: {
filename: '[name].[chunkhash].js',
chunkFilename: '[id].[chunkhash].js'
},

17优惠券页 区域高度超出后会导致双滚动条的出现,

方法一:需设置overflow:hidden;

方法二:确保内部元素高度不超过外部元素

cardBoxRight:{
flex:1,
height:JDDevice.getRpx(199),
paddingHorizontal:JDDevice.getRpx(20),
paddingTop:JDDevice.getRpx(25),
overflow:'hidden',
},

18 设置标题:

    componentDidMount(){
if(Platform.OS == 'web'){
window.onload = function(){
document.querySelector('.jd-header-new-title').innerHTML='加油卡充值';
}
}
},

19: rn调用手机通讯录,require在H5下require提升会报错,所以使用.web、.ios、.android三个文件

20:push popto等路由信息改成数据存储,重新渲染页面

jdreact转换为H5注意事项的更多相关文章

  1. 关于标准ui设计图转换为H5页面的终端适配

    一些基本概念 在进行具体实战之前,首先得了解下面这些基本概念(术语): 视窗 viewport 简单的理解,viewport是严格等于浏览器的窗口.在桌面浏览器中,viewport就是浏览器窗口的宽度 ...

  2. robotframework执行自动化不能转换为h5页面的问题解决

    电脑换成win10后,搭建了robotframework环境,执行自动化发现页面不支持h5页面了.请教了大佬,解决办法如下: 1.切换到DOS环境下,执行pip list命令,查看selenium2l ...

  3. jdreact相关操作注意事项

    1:sublime 安装 babel 插件可以 识别react代码,变色,使用javascipt(babel): 2:热更新:import React, {Component } from 'reac ...

  4. 用Vue.js开发微信小程序:开源框架mpvue解析

    前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...

  5. mpvue 解析

    前言 mpvue是一款使用Vue.js开发微信小程序的前端框架. 总结   生命周期的理解 文档 一次前后端实践 使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复 ...

  6. MpVue解析

    前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发 ...

  7. 为什么选择MpVue进行小程序的开发

    前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发 ...

  8. pytorch加载语音类自定义数据集

    pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.u ...

  9. 小程序web开发框架-weweb介绍

    weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用.如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中.在小程序大行其道的今天,它可以让你的小程序代码得到最大 ...

随机推荐

  1. mybatis实战教程

    参考:http://blog.csdn.net/techbirds_bao/article/details/9233599/

  2. PC/FORTH 判定

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  3. 给rm命令设置别名防止误操作

    1通过alias命令查看别名格式并按照格式修改 alias rm='rm -i' 修改为 alias rm='echo command not found' 2通过编辑vim /etc/profile ...

  4. Androi开发 ---Fragment片段布局案例

    效果图: 1.MainActivity.java package com.example.android_activity; import android.app.Activity; import a ...

  5. quartz自定义线程数

    1.加载包 2.添加quartz.propertes 3.编写自己的任务类 4.添加自动任务配置 5.通过 quartzProperties 配置连接池 1.加载包 <dependency> ...

  6. HDU 2063 (二分图最大匹配)

    RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是,每个女孩 ...

  7. sptring boot 修改默认Banner

    一.自定义banner 启动Spring Boot项目时,在控制台或日志中会默认显示一个Banner,如图所示: 在我们的项目中更希望使用自己的Banner,这样看起来更帅写,但是这对于程序员来说并不 ...

  8. Linux 虚拟内存机制

    每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构. Linux内存管理采用的是页式管理,使用的是多级页表,动态地址转换机构与主存.辅存共同实现虚拟内存 一个新进程建立的时候,将会建 ...

  9. C++中的break,continue和return语句小结

    1.break语句能用在switch,while,do...while和for语句中:continue语句用在while,do...while和for语句中. 2.break结束语句执行,并将程序的执 ...

  10. ChinaCock界面控件介绍-TCCImageViewerForm

    有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...