2017-07-25 4 views
0

Ich habe meine teilschritte navigator unten, die erste szene, PCDrinkingDays funktioniert gut. Aber wenn ich auf eine Aktion versenden, von dieser Komponente Szene zu ändern:reagieren-navigation, dispatch action zu ändern szene - szene nicht angezeigt

onDone =() => { 
    this.props.dispatch(navigate(scenes.PC_HELP_ME_CALCULATE)); 
    };` 

Die PCHelpMeCalculate, erscheint nicht, obwohl ich es macht im Hintergrund durch das Setzen von Breakpoints sehen.

Mein Navigator ist unten. Die anderen Szenen scheinen in Ordnung zu sein, sie bewegen sich nur von der ersten Szene, die das Problem zu sein scheint. Kann jemand helfen? Warum zeigt die Komponente nicht?

import { SubStepsNavigator } from '../../../navigators'; 

import PCDrinkingDays from '../PCDrinkingDays'; 
import PCHelpMeCalculate from '../PCHelpMeCalculate'; 
import PCUnitsCalculatorWhat from '../PCUnitsCalculatorWhat'; 
import PCUnitsCalculatorSize from '../PCUnitsCalculatorSize'; 
import PCUnitsCalculatorStrength from '../PCUnitsCalculatorStrength'; 
import PCUnitsCalculatorDrinksNumber from '../PCUnitsCalculatorDrinksNumber'; 
import PCUnitsCalculatorTable from '../PCUnitsCalculatorTable'; 

import * as scenes from '../../../scenes'; 

const PCDrinkingScenes = { 
    [scenes.PC_DRINKING_DAYS]: { screen: PCDrinkingDays }, 
    [scenes.PC_HELP_ME_CALCULATE]: { screen: PCHelpMeCalculate }, 
    [scenes.PC_UNITS_CALCULATOR_WHAT]: { screen: PCUnitsCalculatorWhat }, 
    [scenes.PC_UNITS_CALCULATOR_SIZE]: { screen: PCUnitsCalculatorSize }, 
    [scenes.PC_UNITS_CALCULATOR_STRENGTH]: { screen: PCUnitsCalculatorStrength }, 
    [scenes.PC_UNITS_CALCULATOR_DRINKS_NUMBER]: { 
    screen: PCUnitsCalculatorDrinksNumber, 
    }, 
    [scenes.PC_UNITS_CALCULATOR_TABLE]: { screen: PCUnitsCalculatorTable }, 
}; 

function getStep(routeName) { 
    switch (routeName) { 
    case scenes.PC_DRINKING_DAYS: 
    case scenes.PC_HELP_ME_CALCULATE: 
    case scenes.PC_UNITS_CALCULATOR_WHAT: 
    case scenes.PC_UNITS_CALCULATOR_SIZE: 
    case scenes.PC_UNITS_CALCULATOR_STRENGTH: 
    case scenes.PC_UNITS_CALCULATOR_DRINKS_NUMBER: 
    case scenes.PC_UNITS_CALCULATOR_TABLE: 
     return 1; 
    default: 
     console.log(`ERR not found step for route ${routeName}`); 
     return -1; 
    } 
} 

const stepsOptions = { 
    nSteps: 2, 
    getStep, 
}; 

const PCDrinkingNavigator = SubStepsNavigator(
    PCDrinkingScenes, 
    { navigationOptions: { gesturesEnabled: false }, headerMode: 'none' }, 
    stepsOptions 
); 

export default PCDrinkingNavigator; 

Ich versende meine Aktion in meiner Komponente:

class PCDrinkingDays extends Component { 

    onDone =() => { 
    this.props.dispatch(navigate(scenes.PC_HELP_ME_CALCULATE)); 
    }; 

    render() { 
    return (
     <SceneSelectNumber 
     goBack={this.goBack} 
     onChangeNumber={this.onChangeNumber} 
     selectedNumberValue={this.props.daysInAweek} 
     onDone={this.onDone} 
     sceneConfig={sceneConfig} 
     /> 
    ); 
    } 
} 

Antwort

0

Sie scheinen Ihre Aktion nirgendwo zu versenden. Sie sollten

this.props.navigation.dispatch(navigate(scenes.PC_HELP_ME_CALCULATE)); 

verwenden oder sogar

this.props.navigation.navigate(scenes.PC_HELP_ME_CALCULATE); 
+0

meine Frage, die ich in meiner Komponente Versand aktualisiert nutzen könnten. – Bomber

+0

Aber das Problem scheint zu sein, dass Sie this.props.dispatch anstelle von this.props.navigation.dispatch verwenden –