2017-09-02 34 views
10

React Native projem ile çalışırken yeniden çalışmaya başladım. Paketleyici Bundling index.ios.js ... [hmr enabled] mesajını gösterir ve bir değişiklik yaptığımda, cihazdaki Hot reloading... mesaj flaşını görüyorum, bu yüzden değişikliğin algılandığından eminim. Ancak, gerçek ekran kod değişikliklerini yansıtmıyor. Canlı yükleme iyi çalışıyor.React Native 0.47.1: Hot reload, MacOS'taki kod değişikliklerini yansıtmıyor

Düğüm modüllerini ve sıfırlama/kaldır/yeniden yüklenen bekçiyi yeniden yükledim. Hiçbir şeyin bir etkisi yok gibi görünüyor.

Başka neler denemeliyim? Ekranın neden güncellenmediğini nasıl anlarım?

+0

Eğer 'bekçi izle-del-all' kullanarak bekçisi temizlemek için denediniz mi? – wlisrausr

+0

Şimdi bunu denedim, 4.9.0 kullanıyorum ve tepki yerel dizinimi listeler. Hala herhangi bir değişiklik yansıtmıyor. – Bill

+0

Bu nasıl? rm -rf/usr/local/var/run/watchman && brew kaldırma bekçisi && brew install bekçi ' – wlisrausr

cevap

3

react-native içinde HMR şu anki sürümü sadece React.Component veya Component [see] uzanan bileşenler için çalışır. Başka bir deyişle, başka bir temel sınıfı genişleten işlevsel bileşenler veya bileşenler için çalışmaz.

  • İşlevsel bileşenler için babel-plugin-functional-hmr'u kullanabilirsiniz. Özel bir temel sınıf varsa
  • , aşağıdaki şekilde sizin .babelrc yılında react-transform eklentisi geçersiz kılabilirsiniz:

     
    { 
        "presets": ["react-native"], 
        "env": { 
        "development": { 
         "plugins": [ 
         ["react-transform", 
          { 
          "transforms": [{ 
           "transform": "react-transform-hmr", 
           "imports": ["react"], 
           "locals": ["module"] 
          }], 
          "superClasses": ["CustomComponent", "React.Component", "Component"] 
          } 
         ] 
         ] 
        } 
        } 
    } 
    
+0

Bu özellikle React.PureComponent vs React.Component kullanmayı tercih edenler için kullanışlıdır.Teşekkürler –

+1

Ayrıca, bileşeniniz içinde 'render()' yönteminin dışında kod oluşturduysanız, yeniden yüklemeyeceğinizi fark ettim. –

+0

Render yönteminin dışında render - React bileşenleri geri dönen işlev çağrıları gibi mi demek istiyorsunuz? Veya başka bir şey? – Bill