2017-09-02 17 views
10

React Nativeプロジェクトでホットリロードをしようとしています。パッケージャはメッセージBundling index.ios.js ... [hmr enabled]を表示します。変更を加えると、デバイス上にHot reloading...メッセージのフラッシュが表示されるので、変更が検出されていると確信しています。しかし、実際の画面はコードの変更を反映していません。ライブリロードは正常に動作します。React Native 0.47.1:ホットリロードはMacOSのコード変更を反映していません

ノードモジュールを再インストールし、ウォッチマンをリセット/アンインストール/再インストールしました。何も効果がないようです。

他に何を試していますか?画面が更新されない理由を把握するにはどうすればよいですか?

+0

あなたは '見張りウォッチ・デル・ALL'を使用して警備員をクリアしようとしたことがありますか? – wlisrausr

+0

これで、私は4.9.0を使用しており、私の反応ネイティブのプロジェクトディレクトリをリストアップしていると言います。まだ変更を反映していません。 – Bill

+0

これはいかがですか? 'rm -rf/usr/local/var/run/watchman && brewアンインストールwatchman && brew install watchman' – wlisrausr

答えて

3

react-nativeのhmrの現在のバージョンは、React.ComponentまたはComponent [see]に拡張されたコンポーネントに対してのみ機能します。つまり、別の基本クラスを拡張する機能コンポーネントやコンポーネントでは機能しません。

  • 機能コンポーネントの場合は、babel-plugin-functional-hmrを使用できます。カスタムベースクラスを持っている場合は
  • 、次のようにあなたの.babelrcreact-transformプラグインを無効にすることができます:

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

これは、React.PureComponentとReact.Componentを使用することを好む人に特に便利です。ありがとう –

+1

私は、コンポーネント内の 'render()'メソッドの外にコードをレンダリングした場合、ホットリロードしないことにも気付きました。 –

+0

レンダリングメソッドの外でレンダリングされました - あなたはReactコンポーネントを返す関数呼び出しのような意味ですか?または、他の何か? – Bill

関連する問題