2017-09-02 2 views
10

Ich versuche, mit meinem React-Native-Projekt heiß zu laden. Der Verpacker zeigt die Nachricht Bundling index.ios.js ... [hmr enabled] und wenn ich eine Änderung mache, sehe ich die Nachricht Hot reloading... auf dem Gerät blinken, so bin ich zuversichtlich, dass die Änderung erkannt wird. Der tatsächliche Bildschirm spiegelt jedoch nicht die Codeänderungen wider. Live-Nachladen funktioniert gut.React Native 0.47.1: Hot Reload zeigt keine Codeänderungen auf MacOS

Ich habe die Knotenmodule neu installiert und zurückgesetzt/deinstalliert/neu installiert Watchman. Nichts scheint etwas zu bewirken.

Was sollte ich noch versuchen? Wie finde ich heraus, warum der Bildschirm nicht aktualisiert wird?

+0

Haben Sie versucht, Wächter löschen mit 'Wächter-Uhr-del-all'? – wlisrausr

+0

Versucht, dass es jetzt heißt, ich verwende 4.9.0 und listet mein reaktionseigenes Projektverzeichnis auf. Es gibt immer noch keine Änderungen. – Bill

+0

Wie wäre es damit? 'rm -rf/usr/local/var/run/wächter & brew uninstall wächter & & brew install wächter ' – wlisrausr

Antwort

3

Die aktuelle Version von HMR in react-native funktioniert nur für Komponenten, die aus React.Component oder Component [see] erweitern. Mit anderen Worten funktioniert es nicht für funktionale Komponenten oder Komponenten, die eine andere Basisklasse erweitern.

  • Für funktionale Komponenten können Sie babel-plugin-functional-hmr verwenden.
  • Wenn Sie eine benutzerdefinierte Basisklasse haben, können Sie react-transform Plugin in Ihrem .babelrc wie folgt außer Kraft setzen:

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

Dies ist besonders nützlich für diejenigen, die die Verwendung von React.PureComponent vs React.Component bevorzugen.Danke –

+1

Ich habe auch bemerkt, dass wenn Sie Code außerhalb der 'render()' Methode innerhalb Ihrer Komponente gerendert haben, wird es nicht heiß neu laden. –

+0

Rendern außerhalb der Render-Methode - meinst du wie über Funktionsaufrufe, die React-Komponenten zurückgeben? Oder etwas anderes? – Bill

Verwandte Themen