0

I am new to react native this is my first attempt in react native I was following a sample tutorial for the basic understanding of the code and other things I am following this raywenderlich's propertyfinder example, while implementing the first navigation example I am facing this issue:

undefined is not a function (evaluating 'this.props.renderScene(route,this)')

in my android device(Samsung J7) which I am using to run the app

Here is my index.android.js

'use strict';
var React = require('react');
var ReactNative = require('react-native');
var SearchPage = require('./SearchPage');
var styles = ReactNative.StyleSheet.create({
      text: {
        color: 'black',
        backgroundColor: 'white',
        fontSize: 30,
        margin: 80
      },
      container: {
        flex: 1
      }
    });



class PropertyFinderApp extends React.Component {

  render() {
    return (

      <ReactNative.Navigator
      style={styles.container}
      renderScene={this.renderScene}
      initialRoute={{
        component: SearchPage,
        index:0,
        title:"home"
      }}/>
      );
  }

}
ReactNative.AppRegistry.registerComponent('PropertyFinder', function() { return PropertyFinderApp });`

and the SearchPage.js file(the other component which I am using):

'use strict';

import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    TextInput,
    View,
    TouchableHighlight,
    ActivityIndicator,
    Image
} from 'react-native';

var styles = StyleSheet.create({
    description: {
        marginBottom: 20,
        fontSize: 18,
        textAlign: 'center',
        color: '#656565'
    },
    container: {
        padding: 30,
        marginTop: 65,
        alignItems: 'center'
    },
    flowRight: {
        flexDirection: 'row',
        alignItems: 'center',
        alignSelf: 'stretch'
    },
    buttonText: {
        fontSize: 18,
        color: 'white',
        alignSelf: 'center'
    },
    button: {
        height: 36,
        flex: 1,
        flexDirection: 'row',
        backgroundColor: '#48BBEC',
        borderColor: '#48BBEC',
        borderWidth: 1,
        borderRadius: 8,
        marginBottom: 10,
        alignSelf: 'stretch',
        justifyContent: 'center'
    },
    searchInput: {
        height: 36,
        padding: 4,
        marginRight: 5,
        flex: 4,
        fontSize: 18,
        borderWidth: 1,
        borderColor: '#48BBEC',
        borderRadius: 8,
        color: '#48BBEC'
    }
});

export default class SearchPage extends Component {

    render() {
        return (
            <View style={styles.container}>
            <Text style={styles.description}>
            Search for houses to buy!
            </Text>
            <Text style={styles.description}>
            Search by place-name, postcode or search near your location.
            </Text>
            <View style={styles.flowRight}>
            <TextInput
            style={styles.searchInput}
            placeholder='Search via name or postcode'/>
            <TouchableHighlight style={styles.button}
            underlayColor='#99d9f4'>
            <Text style={styles.buttonText}>Go</Text>
            </TouchableHighlight>
            </View>
            <TouchableHighlight style={styles.button}
            underlayColor='#99d9f4'>
            <Text style={styles.buttonText}>Location</Text>
            </TouchableHighlight>
            </View>
            );
    }
}

module.exports = SearchPage;

I have no idea what I am doing wrong since I am a beginner in this any help will be appreciated, thanx in advance.

1 Answer 1

1

You for got to write renderScene function, see following example:

<ReactNative.Navigator
  ...
  renderScene={this.renderScene.bind(this)} />


renderScene(route, navigationOperations, onComponentRef) {
  switch(route.index) {
    case 0:
      return <SearchPage />
  }
}
0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.