2017-10-18 35 views
15

nie jestem modyfikujące początkowe rekwizyty:Ustawianie rootView.appProperties nie ponowne renderowanie elementów korzeń

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 
                 moduleName:@"DcWealth" 
               initialProperties:nil 
                launchOptions:launchOptions]; 

self.rootView = rootView; 

tylko oszczędność instancję self.rootView = rootView

i po jakimś wydarzeniem dzieje się na rodzimym boku, chcę przekazać różne rekwizyty:

self.rootView.appProperties = @{ ... }; 

, ale mój widok główny nie renderuje się ponownie i nie otrzymuje nowych rekwizytów. (Robi gdybym ręcznie przeładować JS)

docs powiedzieć, że:

Jest dobrze, aby zaktualizować właściwości w każdej chwili. Jednak aktualizacje muszą być wykonywane na głównym wątku.

Sprawdziłem i zaktualizowałem właściwości głównego wątku.

Co może być przyczyną tego problemu?

Powiązane problem github: https://github.com/facebook/react-native/issues/15938

Odpowiedz

0

Nie udało mi się rozwiązać tego problemu, wydaje się, że jest to błąd.

Po prostu przeniosłem część inicjalizacji kodu js z didFinishLaunchingWithOptions do treści obsługi zdarzeń, na którą czekałem.

Zasadniczo inicjuję aplikację natywną w trybie reakcji tylko po tym, jak wydarzenie rodzime się wydarzy. To raczej włamanie niż rozwiązanie, ale zadziałało to dla mnie.

0

wydaje się być bug z emisji ty wspólnego. Wygląda na to, że praca, której szukasz, również została uwzględniona w tym wydaniu.

enter image description here

Zakładam, że próbował już tego podejścia? Niestety może nie być lepszej pracy.