1. 程式人生 > >React Native 第一坑(持續更新)

React Native 第一坑(持續更新)

環境搭建: https://reactnative.cn/docs/0.51/getting-started.html

1. 在同一個js檔案中,class定義的位置必須在引用之前,否則就會造成找不到class的問題

2. this的執行時可變的,但在箭頭函式中是固定的,箭頭函式體內的this指向定義時所在的物件,不是使用時所在的物件。

3. 儘量多用this指標,可以代替bind函式;

4. 佈局時,在子view的flex=1時,padding和margin才能生效;

5. setState時,如果新值的地址沒有改變,則頁面不會重新整理;

6. state、props的值不會在setState( )或給props重新賦值之後立即生效(是非同步的);

7. 

DeviceEventEmitter.addListener(REFRESH_GAME_RANK,
    this.refresh);

監聽器的引數this.refresh() 不能為帶引數的函式,否則會報錯undefined,也可能是沒弄清楚怎麼傳引數。

8.  動畫過程:

 //監聽Animated.Value的變動
    listener = (newValue) => {
        console.log(newValue);
    }

 
<Animated.ScrollView
                    scrollEventThrottle={16}
                    onMomentumScrollBegin={this._onMomentumScrollBegin}
                    onMomentumScrollEnd={this._onMomentumScrollEnd}
                    onScrollEndDrag={this._onScrollEndDrag}
                    onScroll={Animated.event(
                        [{nativeEvent: {contentOffset: {y: this.state.scrollAnim}}}],
                        {useNativeDriver: true, listener: this.listener},
                    )}

如果添加了動畫值的監聽,則動畫執行之後,按鈕點選無響應,需要自己在listener中處理。

{useNativeDriver: true, listener: this.listener}

9. 對於某個頁面可能同時存在多個例項的情況,慎用redux