abdurrahmanekr / bana-istedigini-sor

Yeni paylaştığım yazılardan haberdar olmak için bloguma abone olun:
https://avarekodcu.com
12 stars 1 forks source link

React-navigation hakkında #38

Closed guvenakcoban closed 6 years ago

guvenakcoban commented 6 years ago

Merhabalar,

React-Navigation kullanıyorum fakat redux ve redux-thunk ile navigasyonu action dosyalarımda tam olarak nasıl kullanacağımı çözemedim. Sizce en mantıklı kullanım nasıldır?

abdurrahmanekr commented 6 years ago

Merhaba, geç cevap verdiğim için üzgünüm, tam cevap vereceğim zaman işim çıkıyor :/ React'ten mi React native'den mi bahsediyorsunuz? React native'de yapmanız gereken çok kolay. StackNavigator üzerinde şöyle bir yapı kurabilirsiniz:

import React from 'react';

import {
    AppRegistry,
    View,
} from 'react-native';

import { StackNavigator } from 'react-navigation';

import Login from './screens/Login'; 
import Start from './screens/Start'; // bu dizindeki dosyayı da altta paylaşıyorum
import Home from './screens/Home';

const Navigator = StackNavigator({
    Start: {
        screen: Start,
    },
    Login: {
        screen: Login,
    },
    Home: {
        screen: Home,
    },
});

const App = () => (
    <View
        style={{ flex: 1 }}>
        <Navigator />
    </View>
);

AppRegistry.registerComponent('App', () => App);

Start.js dosyası da şöyle olur:

import React, { Component } from 'react';

import {
    View,
    ActivityIndicator,
} from 'react-native';

export default class Start extends Component {

    constructor(props) {
        super(props);
    }

    componentWillMount() {
        this.isLogin();
    }

    isLogin() {
        var self = this;
        isLogin().then((res) => {
            if (res) {
                const resetAction = NavigationActions.reset({
                    index: 0,
                    actions: [
                        NavigationActions.navigate({ routeName: 'Home' }),
                    ],
                    key: null
                });

                self.props.navigation.dispatch(resetAction);
            }
            else {
                const resetAction = NavigationActions.reset({
                    index: 0,
                    actions: [
                        NavigationActions.navigate({ routeName: 'Login' }),
                    ],
                    key: null
                });

                self.props.navigation.dispatch(resetAction);
            }
        });
    }

    render() {
        return(
            <View
                style={{
                    flex: 1,
                    flexDirection: 'column',
                    alignItems: 'center',
                    justifyContent: 'center',
                }}>
                <ActivityIndicator
                    animating={true}
                    size="large"/>
            </View>
        );
    }
}

Start.navigationOptions = {
    header: null,
}