2016-06-21 14 views
2

Ich möchte Zugriff auf Windows-Namespace und spezifische Tools wie "Windows.Storage" von js in meinem ReactNative Windows-Projekt erhalten. Wie ich verstanden habe, wird der "Windows" -Kontext nicht an das js-Bundle übergeben (was merkwürdig ist), aber es sollte wahrscheinlich den Weg geben, dies zu ändern.Wie "Windows" zu Chakra-Namespace auf ReactNative Windows geladen wird?

In der Theorie sollte ich in der Lage sein, smth wie diese JsProjectWinRTNamespace(L"Windows.Storage"); aus dem Projekt heraus zu tun. Im Falle von ReactNative sollte es wahrscheinlich Native.JsProjectWinRTNamespace(L"Windows.Storage"); sein. Aber ich kann nicht verstehen, wo diese Linie platziert werden soll.

Jede Hilfe wäre willkommen. Danke.

Antwort

0

Ok, scheint ich habe das gefunden. Sie sollten InitializeChakra() Funktion in react-native-windows/ReactWindows/ReactNative/Chakra/Executor/ChakraJavaScriptExecutor.cs durch Hinzufügen Native.JsProjectWinRTNamespace(L"Windows.Storage"); Linie, um es bearbeiten können, so dass es dann wie folgt aussehen: Jetzt

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."); 
    } 

, können Sie Windows-API verwenden, direkt von der ReactNative js Code zB:

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

!!! Aber seien Sie vorsichtig, da dieser Namespace nur in der Chakra-Laufzeit verfügbar ist. Wenn Sie also eine App mit Chrome debuggen, werden ständig 'Windows is undefined' Fehler angezeigt.