2016-06-21 2 views
2

내 ReactNative Windows 프로젝트 내에서 Windows 네임 스페이스 및 js의 "Windows.Storage"와 같은 특정 도구에 대한 액세스 권한을 얻고 싶습니다. "Windows"컨텍스트가 js 번들 (이상하게 보임)로 전달되지 않았지만이를 변경하는 방법이 있어야합니다.ReactNative Windows에서 Chakra 네임 스페이스에 "Windows"를로드하는 방법은 무엇입니까?

이론적으로 나는 프로젝트 내에서이 JsProjectWinRTNamespace(L"Windows.Storage");과 같은 일을 할 수 있어야합니다. 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에서 직접 윈도우 API를 사용 할 수 있습니다 코드 예 :

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

!!! 그러나 Chakra 런타임에서만이 네임 스페이스를 사용할 수 있으므로 Chrome을 사용하여 앱을 디버깅 할 때 항상 'Windows is undefined' 오류가 발생합니다.

관련 문제