因公司業(yè)務(wù)發(fā)展,決定將公司主要業(yè)務(wù)模塊用ReactNative來開發(fā)弱左,其他模塊使用原生,于是我又重新開始了自己的ReactNative學(xué)習(xí)之路炕淮,此文記錄在開發(fā)過程中遇到的問題拆火。
1.ReactNative 真機(jī)上調(diào)試報錯 could not connect to development server
原因:原先jsCodeLocation的地址是 http://localhost:8081/index.bundle?platform=ios&dev=true 。 localhost指向的不一定是本機(jī)的正確地址
解決方案:修改為 http://本機(jī)ip地址:8081/index.bundle?platform=ios&dev=true
- ReactNative iOS報錯Module
react
does not exist in the Haste module map
原因 react模塊并沒有正確的加進(jìn)去
解決方案 運(yùn)行yarn add react
3涂圆。ReactNative 報錯 Invariant Violation:Element type isinvalid expect a string
原因:類別導(dǎo)出時錯誤了
解決方案:
修改class YourApp extends Component {
修改后export default class YourApp extends Component<{}> {
4.「React Native」antdDesign 報錯 Unrecognized font family 'antoutline'
原因:沒有導(dǎo)入字體庫
解決方案 react-native link @ant-design/icons-react-native
重新運(yùn)行還是出現(xiàn)這個報錯们镜。就打開Xcode重新編譯 因為運(yùn)行在手機(jī)上的app 是并沒有將字體庫打包的原始版本。
5.ReactNative Realm數(shù)據(jù)庫存儲類型
參數(shù)類型有7種润歉,bool,int,float,double,string,data,date
注意的點
其中 data 是 ArrayBuffer模狭,具體是什么我還不太清楚,不過這個并不是數(shù)組的意思踩衩。
必填屬性保存的時候不支持 null 或者 undefined嚼鹉,選填屬性可以保存這兩種類型的值,因此如果在賦值時有可能屬于這些值時九妈,應(yīng)該先做好判斷反砌,否則會拋出異常
選填屬性用 optional 或者在類型后給個 ? 來做表示
6.Realm的addlistener方法始終不起作用
原因:沒有能正確調(diào)用更新插入的方法雾鬼∶戎欤看文檔 之后修復(fù)
7.setstate之后 組件的狀態(tài)不變更
原因。在組件propTypes中獲取到外面?zhèn)鱽淼膮?shù)之后再次賦值給了state 其實數(shù)據(jù)依賴于外界 所以組件內(nèi)部的state無法變更狀態(tài)策菜。