React Native - initialRouteName не изменяется - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь динамически изменить начальный маршрут моего приложения с параметром, который приходит из приложения. js, но он не работает. Событие, отправляющее явное «истина», не работает. Console.log показывает правильное значение.

приложение. js

import React, { useState, useEffect } from 'react';
import { RootNavigatior } from "./src/routes";

import { isSignedIn } from './src/services/auth';

export default function App() {

  const [signed, setSigned] = useState(false);

  useEffect( () => {

      isSignedIn()
      .then(  res => { setSigned(res);} )
      .catch(err => alert("An error occurred"));
    }, []);

    console.log("signed: ",signed);

  return <RootNavigatior signed={signed} />
}

маршрут. js

export const RootNavigatior = ( {signed = false}) => {

  console.log("Routes_SIGNED: ", signed);

  return( 

    <NavigationContainer>
      <RootStack.Navigator initialRouteName={ () => signed ? "App" : "Auth" } >
      <RootStack.Screen
        name="App"
        component={SignedInStackScreen}
        options={{ animationEnabled: false }}
      />
      <RootStack.Screen
        name="Auth"
        component={SignedOutStackScreen}
        options={{ animationEnabled: false }}
      />
    </RootStack.Navigator>
      {/* <RootStackScreen signed={false} /> */}
    </NavigationContainer>

  )
}
```

1 Ответ

0 голосов
/ 27 апреля 2020

Можете ли вы быть более ясным? Журнал в приложении. js показывает ожидаемое вами значение или нет?

Я думаю, что проблема в блоке асинхронного кода. Когда это разрешается, initialRouteName уже установлено, так что его, вероятно, вы не хотели. Я думаю, вы можете использовать ключевое слово «await», чтобы дождаться его разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...