UNPKG

react-native-1app

Version:

168 lines (158 loc) 3.8 kB
import React, { Component } from "react"; import { View, Modal } from "react-native"; import SnackBar from "react-native-snackbar-component"; export default class NavigatorView extends Component { constructor(props) { super(props); this.state = { modal: false }; } componentDidMount() {} alert(text, wait) { this.setState({ alert: text, openAlert: true, loadAlert: wait ? true : false, wait: wait }); setTimeout(() => { this.setState({ openAlert: false, loadAlert: false, wait: false, alert: "---" }); }, 3000); } closeAlert() { this.setState({ openAlert: false, loadAlert: false, wait: false }); setTimeout(() => { this.setState({ openAlert: false, loadAlert: false, wait: false, alert: "---" }); }, 500); } openModal(options) { this.setState({ modal: options.component, propsModal: options.props }); } closeModal() { this.setState({ modal: false, propsModal: null }); } render() { return ( <View style={this.props.style}> {this.props.children} <Modal animationType={"fade"} transparent={true} onRequestClose={() => { this.setState({modal:false}) }} visible={this.state.modal ? true : false} > {this.state.modal ? <this.state.modal navigator={this} navigation={this.props.navigation} screenProps={this.props.screenProps} {...this.props.screenProps} {...this.state.propsModal} /> : null} </Modal> <SnackBar visible={this.state.openAlert} textMessage={this.state.alert} backgroundColor={"#444"} actionHandler={() => { this.setState({ openAlert: false }); }} actionText="OK" /> </View> ); } } NavigatorView.cloneState = function(page) { if (!page || !page.props) { return; } var copia = page.state; var original = page.props; if ( page.props.navigation && page.props.navigation.state && page.props.navigation.state.params ) { var foco = page.props.navigation.state.params; if (foco.oldState) { var old = foco.oldState; var list = Object.keys(old); for (var i = 0; i < list.length; i++) { var nome = list[i]; copia[nome] = old[nome]; } } var list = Object.keys(foco); for (var i = 0; i < list.length; i++) { var nome = list[i]; if(nome=="oldState"){ continue; } copia[nome] = foco[nome]; } } if (page.props.oldState) { var foco = page.props.oldState; var list = Object.keys(foco); for (var i = 0; i < list.length; i++) { var nome = list[i]; copia[nome] = foco[nome]; } } if (page.props.screenProps) { var foco = page.props.screenProps; var list = Object.keys(foco); for (var i = 0; i < list.length; i++) { var nome = list[i]; copia[nome] = foco[nome]; } } if (copia.store && copia.store.getState) { var state = copia.store.getState(); var lista = Object.keys(state); for (var i = 0; i < lista.length; i++) { var nome = lista[i]; if(state[nome]){ copia[nome] = state[nome]; } } } var lista = Object.keys(page.props); for (var i = 0; i < lista.length; i++) { var nome = lista[i]; copia[nome] = page.props[nome]; } }; NavigatorView.updateState = function(original, copia) { if (original && copia) { NavigatorView.cloneState({ props: original, state: copia }); } };