I followed the doc of the react-native-elements library but I get this.search as an undefined object...
searchbar react-native-elements
class SearchBarTest extends Component {
    componentDidMount()
    {
        this.search.focus()//search is undefined
    }
    render(){
        <SearchBar
          ref={search => this.search = search}
          ...
        />
    }
}
Any idea how to make this working?
EDIT:
Adding full context of the code.
The idea is having a component with a header and body. The header has an optional search bar or a title and two buttons depending on the props search.
If search props is true, then I display the searchBar.
PARENT COMPONENT:
import React, {Component} from 'react';
import {StyleSheet, View, Text, TouchableWithoutFeedback, Keyboard} from 'react-native';
import Icon from 'react-native-vector-icons/Ionicons';
import DismissableKeyboardContainer from '../../components/DismissableKeyboardContainer';
export default class Search extends Component {
    static navigationOptions = () => {
        return {
            tabBarIcon: ({tintColor}) => (
                <Icon name="ios-search-outline" size={25} color={tintColor}/>
            )
        }
    };
    render() {
        someMethod = () => {
            console.log('hello');
        }
        return (
            <DismissableKeyboardContainer search={true}>
                <View style={{flex: 1, alignItems: 'center'}}>
                    <Text>Hello world</Text>
                </View>
            </DismissableKeyboardContainer>
        );
    }
}
const styles = StyleSheet.create({
    container: {
        flex: 1,
    }
});
COMPONENT where the actual searchBar component is used:
import React, { Component} from 'react';
import { Keyboard, TouchableWithoutFeedback, TouchableOpacity, View, Text, StyleSheet} from 'react-native';
import { SearchBar } from 'react-native-elements'
import Icon from 'react-native-vector-icons/Ionicons';
import PropTypes from 'prop-types';
class DismissableKeyboardContainer extends Component {
    static defaultProps = {
        title: '',
        search: false,
        buttonLeft: '',
        buttonRight: '',
        borderShadow: true,
        headerStyle:{}
    };
    componentDidMount()
    {
    }
    render() {
        let { title, search, buttonLeft, buttonRight, headerStyle, borderShadow } = this.props;
        return (        
            <TouchableWithoutFeedback onPress={() => Keyboard.dismiss()}>
                <View style={{ flex: 1 }}>
                    <View style={[styles.headerContainer, borderShadow ? styles.borderShadow : '', headerStyle]}>
                        {
                            !search && <View style={{position: 'absolute', padding: 10, bottom: 0, flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center'}}>
                                <TouchableOpacity style={{ flex: 0.2, alignItems: 'center'}}>
                                    {
                                        buttonLeft != "" && <Icon name={buttonLeft} size={25} color="grey" />
                                    }
                                </TouchableOpacity>
                                <View style={{ flex: 1, alignItems: 'center' }}>
                                    <Text style={styles.title}>{title}</Text>
                                </View>
                                <TouchableOpacity style={{ flex: 0.2, alignItems: 'center' }}>
                                    {
                                        buttonRight != "" && <Icon name={buttonRight} size={25} color="grey" />
                                    }
                                </TouchableOpacity>
                            </View>
                        }
                        {
                            search && <SearchBar
                                ref={search => this.search = search}
                                containerStyle={{ backgroundColor: 'transparent', borderTopWidth: 0, borderBottomWidth: 0 }}
                                inputStyle={{ backgroundColor: 'white' }}
                                lightTheme
                                onChangeText={someMethod}
                                placeholder='Type Here...'
                            />
                        }
                    </View>
                    <View style={{ flex: 1, backgroundColor: 'transparent'}}>
                        {this.props.children}
                    </View>
                </View>
            </TouchableWithoutFeedback>
        );
    }
}
const styles = StyleSheet.create({
    headerContainer: {
        flex: 0.12,
        justifyContent: 'flex-end',
        backgroundColor: 'white' ,
    },
    borderShadow: {
        borderColor: '#ddd',
        borderBottomWidth: 0,
        shadowColor: '#000',
        shadowOffset: { width: 0, height: 2 },
        shadowOpacity: 0.2,
        shadowRadius: 1,
        elevation: 1,
    },
    title: {
        fontSize: 18,
        fontWeight: 'bold'
    }
});
DismissableKeyboardContainer.propTypes = {
    title: PropTypes.string.isRequired,
    search: PropTypes.bool.isRequired,
    buttonLeft: PropTypes.string.isRequired,
    buttonRight: PropTypes.string.isRequired,
    headerStyle: PropTypes.any,
};
export default DismissableKeyboardContainer;
 
    