Как получить ценность реквизита через навигатор ящика - PullRequest
0 голосов
/ 16 октября 2019

Как получить значение реквизита userdata в компоненте head? Я сопоставляю состояние с реквизитом, но не могу принять это значение в компоненте head. Как передать это. Передача значений в компонент высшего порядка. Предоставление кода. Может кто-нибудь пройти его. Как получить значение реквизита userdata в компоненте head? Я сопоставляю состояние с реквизитом, но не могу принять это значение в компоненте head.Как передать это. Передача значений в компонент высшего порядка. Предоставление кода. Может кто-нибудь пройти его

import React from "react";
import {Image, Text, View, ToastAndroid} from "react-native";
import {createDrawerNavigator} from 'react-navigation-drawer';
import {createMaterialTopTabNavigator, createStackNavigator, createAppContainer,DrawerActions} from "react-navigation";
import {Icon} from 'react-native-elements';
import DrawerContent from "./DrawerContent";
import {connect} from "react-redux";
import FirstList from "./FirstList";
import SecList from "./SecList";
import ThirList from "./ThirList";
import color from "../util/Colors";
import DashBoard from "./DashBoard";
const monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const TabNavigator = createMaterialTopTabNavigator(
{
    FirstList : FirstList ,
    SecList : SecList ,
},
{
    tabBarOptions: {
        labelStyle: {fontSize: 13},
        activeTintColor: color.basecolor,
        inactiveTintColor: 'black',
        scrollEnabled: false,
        style: {
            backgroundColor: 'white',
            height:45
        },
        indicatorStyle: {
            backgroundColor: color.basecolor,
        }
    },
    title: 'Details',
}

);
const StackNavigator1 = createStackNavigator({
TabNavigator: {
    screen: TabNavigator,
    navigationOptions:({navigation})=>{
        return{
            header: (
                <Head/>
            )
        }
    },
},
List: {
    screen: ThirList 
    navigationOptions:({navigation})=>{
        return{
            header: null
        }
    },
},
});
const RootNav = createAppContainer(StackNavigator1);
var name;
class Head extends React.Component {
constructor(props) {
    super(props);
    name='';
    var today = new Date();
    this.state = {
        'date': today.getDate() + " " + monthNames[today.getMonth()] + " " + today.getFullYear()
    };
    console.log(JSON.stringify(this.props)+"userdata");
}

render() {
    const {date} = this.state;
    return (
        <View>
            <View style={{flexDirection: 'row', backgroundColor: color.mainback, height: 40,padding:10}}>
                <Text style={{
                    fontSize: 14,
                    textAlign: 'left',
                    marginLeft: 10,
                    flex:1,
                    color:color.textcolor,
                    fontWeight:'bold',
                    textAlignVertical: "center"
                }}>Orders</Text>
                <Text style={{
                    fontSize: 10,
                    textAlign: 'right',
                    marginLeft: 20,
                    marginRight: 20,
                    fontWeight: 'bold',
                    color:color.datetextcolor,
                    textAlignVertical: "center"
                }}>{date}</Text>
            </View>

        </View>
    );
}

}

class RootScreen extends React.Component {
render() {
    return (
        <View style={{flex: 1}}>
            <RootNav/>
        </View>
    );
}
}

const StackNavigator = createStackNavigator({
    DrawerNavigator: {
        screen: RootScreen,
        activeTintColor: color.basecolor,
        navigationOptions: ({navigation}) => ({title: 'Home'}, {
                headerLeft:
                    <View style={{flexDirection: 'row', marginLeft: 20}}>
                        <Icon name="menu" onPress={()=>navigation.dispatch(DrawerActions.toggleDrawer())} size={30} color="white"/>
                        <Image source={require('../images/logo.png')}
                               style={{height: 35, width: 150, resizeMode: 'contain'}}/>
                    </View>,
            }
        ),
    },
    Dashboard: {
        screen: DashBoard,
        navigationOptions: {
            headerTitle: (
                <View style={{flex: 1, flexDirection: 'row', justifyContent: 'center'}}>
                    <View style={{flex: 1, justifyContent: 'center'}}>
                        <Image
                            source={require('../images/logo.png')}
                            style={{height: 35, width: 150, marginLeft: -20, resizeMode: 'contain'}}
                        />
                    </View>
                </View>
            ),
        },
    },
}, {

    defaultNavigationOptions: {
        headerTintColor: 'white',
        headerStyle: {
            backgroundColor: color.basecolor,
        },
    }
}
);

const DrawerNavigator = createDrawerNavigator(
{
    Home: StackNavigator
},
{
    contentComponent: DrawerContent,
    drawerWidth: 280,
    navigationOptions: {
        header: null
    },

}
);
function mapStateToProps(state) {
return {
    userdata: state.auth.userdata
}
}
export default connect(mapStateToProps) (DrawerNavigator);

1 Ответ

0 голосов
/ 16 октября 2019

Ваша цель - подключить Head компонент к Redux Store , верно?

Достаточно просто использовать функцию connect (). Решением было бы добавить эту строку кода.

const NewHead = connect(mapStateToProps)(Head)

Заменить <Head/> на <NewHead/> в StackNavigator1

Тогдаполучить доступ к данным в компоненте Head следующим образом.

this.props.userdata

ИЛИ

Если вы хотите передавать данные в маршруты при переходе к ним, вы можете обратиться к этому документация .

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