2016-06-21 11 views
2

私はReactNative Windowsプロジェクト内のWindowsネームスペースとjsの "Windows.Storage"のような特定のツールにアクセスしたいと思っています。 「Windows」コンテキストはjsバンドルには渡されません(これは変です)が、これを変更する方法があるはずです。ReactNative WindowsのChakra名前空間に "Windows"を読み込む方法は?

私は理論的には、プロジェクト内からこのJsProjectWinRTNamespace(L"Windows.Storage");のようなsmthを行うことができるはずです。 ReactNativeの場合、おそらくNative.JsProjectWinRTNamespace(L"Windows.Storage");になるはずです。 しかし、私はこの行をどこに置くべきか理解できません。

ご協力いただければ幸いです。おかげさまで

答えて

0

これはわかりました。 あなたは、それは次のようになりますので、それにNative.JsProjectWinRTNamespace(L"Windows.Storage");ラインを追加することでreact-native-windows/ReactWindows/ReactNative/Chakra/Executor/ChakraJavaScriptExecutor.csInitializeChakra()機能を編集することができるはずです。

private void InitializeChakra() 
    { 
     JavaScriptContext.Current = _runtime.CreateContext(); 

     var consolePropertyId = default(JavaScriptPropertyId); 
     Native.ThrowIfError(
      Native.JsGetPropertyIdFromName("console", out consolePropertyId)); 

     Native.JsProjectWinRTNamespace(L"Windows.Storage"); 

     var consoleObject = JavaScriptValue.CreateObject(); 
     EnsureGlobalObject().SetProperty(consolePropertyId, consoleObject, true); 

     _consoleInfo = ConsoleInfo; 
     _consoleLog = ConsoleLog; 
     _consoleWarn = ConsoleWarn; 
     _consoleError = ConsoleError; 

     DefineHostCallback(consoleObject, "info", _consoleInfo); 
     DefineHostCallback(consoleObject, "log", _consoleLog); 
     DefineHostCallback(consoleObject, "warn", _consoleWarn); 
     DefineHostCallback(consoleObject, "error", _consoleError); 

     Debug.WriteLine("Chakra initialization successful."); 
    } 

さて、あなたはReactNative JSから直接、WindowsのAPIを使用することができますコード例:

var path = Windows.Storage.ApplicationData.current.localFolder.path;

!!!しかし、この名前空間はChakraランタイムでしか利用できないので、Chromeでアプリをデバッグするときには常に'Windows is undefined'のエラーが発生するので注意してください。

関連する問題