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. oracle中的对象创建及删除语句【原创】

    oracle对象 1.表 a)创建表1 create table students( id number(10), stuno number(10) , sex varchar2(2), age in ...

  2. TModalResult 和 MessageBox 返回值

    //其实是对应的{ TModalResult values } const mrNone = ; mrOk = idOk; mrCancel = idCancel; mrAbort = idAbort ...

  3. 【转载】非对称加密过程详解(基于RSA非对称加密算法实现)

    1.非对称加密过程:         假如现实世界中存在A和B进行通讯,为了实现在非安全的通讯通道上实现信息的保密性.完整性.可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体 ...

  4. Centos7安装RabbitMQ解决Erlang依赖报错

    通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守. RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是 ...

  5. python学习 day01 基础介绍

    一.编程的目的 1.什么是语言?编程语言又为何? 语言是一种事物与另外一种事物沟通的介质.编程语言是程序员和计算机沟通的介质. 2.什么是编程? 程序员把自己想要计算机做的事用编程语言表达出来,编程的 ...

  6. day 30 客户端获取cmd 命令的步骤

    import subprocessimport structimport jsonfrom socket import *server=socket(AF_INET,SOCK_STREAM)serve ...

  7. python中的pandas的两种基本使用

    python中的pandas的两种基本使用2018年05月19日 16:03:36 木子柒努力成长 阅读数:480 一.pandas简介 pandas:panel data analysis(面板数据 ...

  8. HDU 6098 17多校6 Inversion(思维+优化)

    Problem Description Give an array A, the index starts from 1.Now we want to know Bi=maxi∤jAj , i≥2. ...

  9. <转载> VUE项目中CSS管理

    vue的scoped 在vue项目中,当 .vue文件中 <style> 标签有 *scoped 属性时,它的 CSS 只作用于当前组件中的元素,很好的实现了样式私有化的目的. 使用sco ...

  10. linux 安装crontab执行定时任务

    转载:https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html http://yangqijun.iteye.c ...