2015-08-05 2 views
0

У меня есть приложение с компонентом SignInPage и основным компонентом приложения.React Native: Можете ли вы принудительно обновить приложение или перенести страницу на кнопку нажатием кнопки?

Если пользователь выполнил вход, приложение отобразит MainApp. В противном случае будет выдано SignInPage.

При нажатии кнопки входа в SignInPage я хотел бы обновить или повторно отобразить страницу, чтобы она перенаправлялась на компонент MainApp.

Есть ли способы сделать это? Или любое обходное решение для такой маршрутизации?

+0

Я спрашивал специально для приложения React Native. У меня есть все логики, настроенные для сохранения текущего идентификатора пользователя при входе в систему и проверки подписанного или нет. Мой вопрос в том, есть ли способ перенаправить основной компонент приложения на страницу входа после нажатия кнопки успешного входа в систему? Принудительное обновление сделает, но не уверен, как его реализовать. Кто-нибудь знает как? Есть ли примеры приложений, созданных с помощью React Native, подобных этому? –

+0

вам необходимо использовать навигатор или навигатор и использовать push для следующего маршрута или заменить существующий маршрут (с той же страницей), чтобы получить эффект перезагрузки http://facebook.github.io/react-native/docs/navigator .html # content – boredgames

+0

Возможно ли это сделать location.reload() в веб-браузере без использования навигатора или navigatorIOS? –

ответ

-1
//save current user id when signed in 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[jsonData valueForKey:@"member_id"] forKey:@"UserID"]; 
[defaults synchronize]; 


//check when app launch signed in or not in 
     //application:didFinishLaunchingWithOptions 

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"UserID"]==0) { 
      //no user login go back to Sign page 
} 
else{ 
     //go in main screen of you application as user already login root in main app storyboard id 
self.window.rootViewController=[self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"root"]; 


} 
1

Итак, есть два способа, которые я могу придумать. Можно было бы, чтобы приложение всегда пыталось загрузить страницу входа в начало приложения. Затем в sign-in компонента, сделать что-то вроде:.

componentDidMount: function() { 
    if (currentUserStore.getUser()) { 
    return this.props.navigator.push({ 
     title: 'Home', 
     component: MainApp 
    }); 
    } 
} 

Так что это делает это проверить, если у вас есть пользователь, вошедший в случае, если вы это сделаете, то он переходит к сцене MainApp, в противном случае он ничего не делает и обычно выполняет sign-in.

Другой способ сделать это - использовать состояние. Таким образом, вы можете сделать Home компонент, как:

var Home = React.createClass({ 
    getInitialState: function() { 
    return { 
     loggedIn: false 
    }; 
    }, 
    componentDidMount: function() { 
    if (currentUserStore.getUser()) { 
     return this.setState({ 
     loggedIn: true 
     }); 
    } 
    }, 
    render: function() { 
    if this.state.loggedIn 
     <MainApp ... /> 
    else 
     <SignIn ... /> 
    } 
}); 

Тогда в вашей части зарегистрировались компонента, убедитесь, что setState к истине, когда пользователь входит в успешно.

Смежные вопросы