react-native注意事项,开发前必读文档

Posted 欧阳呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-native注意事项,开发前必读文档相关的知识,希望对你有一定的参考价值。


1. 平台区别

组件文件区别
index.js        -> index.rn.js
index.scss  -> index.rn.scss

路由页面区别 <请避免使用>
index.js    -> index.android.js   index.ios.js
index.scss  -> index.android.scss   index.ios.scss

scss 行rn忽略
/*postcss-pxtransform rn eject enable*/   
white-space: nowrap;
/*postcss-pxtransform rn eject disable*/

js 里特殊判断
process.env.TARO_ENV === "rn"

2. 样式处理及不同点

类型修改描述
transformtranslate(-50%, 0)@include eject()RN不支持百分比
TarnsitionAny@include eject()RN不支持
backgroundline-gradient@include eject()RN不支持渐变色背景
positionfixedposition:abslute;@include eject(position: fixed)RN只有relative和absolute
-webkit-overflow-Scrollany@include eject()RN不支持该属性
line-height50%改写成像素表示CSS中数字类型表示行距倍数,RN中表示行距像素
box-shadowspreadBox-shadow:1px 1px 24px #eee;@include eject(1px 1px 24px 0px #eee);RN仅支持width height blur 不支持spread
font-familymultiple避免使用RN不支持多个字体类型设置
!important如需使用,请使用@include eject($property, $value). 通过合理的类名,和sass预设,可以规避RN不支持!Important 的写法
font-sizeInherit改写成像素表示RN的fontSize只支持数字,即逻辑像素
outlineany@include eject()RN不支持该属性
resizeany@include eject()RN不支持该属性
align-itemstop使用规范值RN只支持flex-start flex-end center stretch baseline
box-sizing使用padding时注意即可RN是border-box,需要其他端兼容
flex-direction默认值不同使用同行多个元素时注意即可RN默认方向为column,而web默认是row
colorrgb非透明色尽量使用html形式,透明色使用rgba形式rgb支持3个属性,如果传了第四个属性(即透明度),web自动忽略,RN中无法解析
组合选择器any避免使用组合选择器不支持 sass中的组合选择器在转换成RN的时候会被忽略
margin重叠any@include eject()纵向margin重叠,RN端不存在,不论是同级元素之间还是父子元素之间
displayNone , flex
overflowvisible , hidden , scroll

3. 特殊注意点

类型注意点解决方案
View不渲染的话,return null或者undefined不要return 空
View字符串style backgroundImage不支持,需要差异化代码RN中可以使用ImageBackground组件设置背景
View内部不能直接使用字符串字符串外部使用Text
storageRN不支持同步的storage不论是get还是set都是异步方法,推荐promise化使用
后代选择器sass或者纯css中避免后代选择器,RN会直接忽略
ImageRN中Image需要显性指定宽高,无法自动获取避免使用height: auto等方式设置
Image设置mode不设置可能导致图片变形或不如预期
组件参数组件参数类型必须正确,number类型传字符串会报错避免maxLength=“6”这样的写法,改成maxLength={6}
Taro.showLoadihng需要手动调用Taro.hideLoading()隐藏注意即可
InputiOS无法输入中文需要特殊封装,shouldComponentUpdate。【dq-Input已封装】
PickerRN下直接使用可能会无法触发需要在Picker子组件外部包裹一层DqTouchable组件
style属性接受一个对象,不可以是字符串,flex的值应该是number
style属性style内联样式Taro不会自动转换格式使用utils/style.js -> formatStyle方法进行转换
Text内部只能包裹Text或者Image组件,不能包含其他子组件,包括IconFontIconFont本质上是SVG
独有样式分离比如color,fontSize等Text独有样式,不写到View组件上
阻止触摸e && e.stopPropagation && e.stopPropagation()
hooks
路由参数组件里使用全局变量获取,例:global.routerParams组件里获取不到this.$router.params

1. 如有错误,敬请指出

2. 原创不易,还请各位客官动动发财的小手支持一波(关注、评论、点赞、收藏)
3. 拜谢各位!后续将继续奉献优质好文
4. 如果存在疑问,可以私信我

以上是关于react-native注意事项,开发前必读文档的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 学习笔记-Android开发平台-开发环境搭建

React-Native真机调试

react-native组件封装与传值

学习 IOC 设计模式前必读:依赖注入的三种实现

前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件

前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件