I have a container connected to redux which inherits the 'global state' as props thanks to the connect(mapStateToProps, mapDispatchToProps) line... 
The container (Container.js) in turn passes down the props to the Table (Table.js), which receives them fine as expected. 
My issue occurs when I try to make the Table a Navigation stack. Reason being I want to be able to click on each row which would navigate to the DetailPage which would be populated by the different props dependant on rows.
However when adding StackNavigator all my props passed down from the Container are gone and only the React Navigation ones are there (navigation: {actions:{goBack... ETC}}).
Note: This also happens if I connect the Component directly.
Below is a dummied down example of my code structure.
What am I doing wrong/How do I maintain the props passed down?
Container.js
class Container extends Component {
  render() {
    return (
      <View>
        <Table {...this.props} />
      </View>
    )
  }
}
const mapStateToProps = state => {
  return {
    data: state.data,
    propTwo: state.propTwo
  }
}
const mapDispatchToProps = dispatch => {
  return {
    functionOne: () => dispatch(functionOne()),
    functionTwo: arg => dispatch(functionTwo(arg))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(Market);
Table.js
const DetailPage = () => <View><Text>Just a mock page</Text></View>
class Table extends Component {
  keyExtractor = (item, index) => index;
  renderItem = (argOne, index) => {
    return (
      <ListItem
        onPress={() => this.props.navigate(argOne)}
        key={index} />
    )
  }
  render() {
    return (
      <View>
        <FlatList
          keyExtractor={this.keyExtractor}
          data={this.props.data}
          renderItem={this.renderItem}
          refreshControl={
            <RefreshControl
              onRefresh={this.props.functionTwo}
            />
          }
        />
      </View>
    ) 
  }
}
// react-navigation StackNavigator
export default Table = StackNavigator({
  Table: { screen: Table },
  DetailPage: { screen: DetailPage }
});
You can move the StackNavigator into Container.js:
export default StackNavigator({
  Table: { screen: connect(mapStateToProps, mapDispatchToProps)(Container) },
  DetailPage: { screen: DetailPage }
});
Also you can connect to Table directly instead of creating a Container wrapper class: 
connect(mapStateToProps, mapDispatchToProps)(Table)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With