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 />
  }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.