天天看點

React-Native踩坑記錄二

1.Image元件的borderRadius畫圓有平台相容性問題,在IOS下會失效

解決方法有幾種

(1)在外面包裹一層View,對View元件使用borderRadius就可以了,這是我的做法

(2)在同一級屬性塊下加上overflow: 'hidden',我沒試過,大家可以閱讀下面的連結

https://www.jianshu.com/p/d237f0258418

2.React-Native的漸變實作方案

(1) 使用react-native-linear-gradient:https://github.com/react-native-community/react-native-linear-gradient

(2) 讓設計直接提供漸變的背景圖檔,簡單粗暴

3.React-Native的陰影實作方案

(1)借助react-native-shadow子產品實作(需要引入其他原生代碼)

(2)借助react-native-shadow-card子產品實作(不需要引入其他原生代碼)

(3)自己實作,通過shadowOpacity等原生屬性單獨實作對IOS的相容,通過elevation屬性單獨實作對Android的相容,實際上這也是react-native-shadow-card的做法

(4)讓設計直接提供陰影的背景圖檔,簡單粗暴

4.Animated插值的用法

插值映射的時候,outputRange可以是一個 “數字 + 特殊字元”的形式,例如

outputRange: ['0%', '100%']

或者

outputRange: ['0deg', '100deg']

或者

width: this.state.progress.interpolate({

inputRange: [0, 1],

outputRange: ['0%', '100%']

})

5.RN動畫三闆斧

第一步:初始化動畫值

this.state = {

progress: new Animated.Value(0)

};

第二步:改變動畫值

Animated.timing(this.state.progress, {

toValue: endRatio,

duration: 800,

easing: Easing.inOut(Easing.ease)

// easing: Easing.linear()

}).start();

第三步:取值放進Animated.View中(必須用Animated下的元件)

const localStyle = {

width: this.state.progress.interpolate({

inputRange: [0, 1],

outputRange: ['0%', '100%']

})

};

return

6.style對象的格式

style對象不一定強制要求用StyleSheet.create包裹,普通的對象字面量也可以寫入元件的style屬性當中

7. fontWeight的取值

可以控制字型粗細,取值有“normal”,"bold","100" ~ "900",其中 “400”是正常,“700”是"bold"

{

fontWeight: "100"

}

8.Image的長度最好不要使用比例

Image的長度定義最好使用固定的px,如果使用比例控制長度的話,會遇到不太好處理的情況

9. 自定義彈框實作方案

選用生态:react-native-root-siblings

原理:重寫AppRegistry.registerComponent,然後插入元素