2016-04-20 1 views
0

В настоящее время я создаю приложение response-redux, и когда я нажимаю кнопку «Сохранить», приложение должно вызывать функцию addToSaved в действиях/index.js. Тем не менее, я получаю сообщение об ошибке «this.props.addToSaved is undefined», а не функция. Я определяю функцию в actions/index.js, но мне интересно, не хватает ли я чего-то другого. Вот то, что я в данный момент делаю:this.props.function() не определено в приложении React?

в компоненты/MainView.js:

'use strict'; 
import { addToSaved } from "../actions" 

var React = require('react-native'); 
var { 
    StyleSheet, 
    Image, 
    View, 
    Text, 
    Component, 
    TouchableHighlight 
} = React; 


class MainView extends Component { 
    onSearchPressed() { 
     console.log('search pressed'); 
     this.props.addToSaved(); 
    } 
    render() { 
     return (
      <View style={styles.container}> 
       <Image style={styles.image} 
        source={{uri: pic.img_url}} /> 
       <TouchableHighlight style = {styles.button} 
         onPress={this.onSearchPressed.bind(this)} 
         underlayColor='#99d9f4'> 
         <Text style = {styles.buttonText}>Save</Text> 
       </TouchableHighlight> 
      </View> 
     ); 
    } 
} 

module.exports = MainView; 

в действиях/index.js:

var actions = exports = module.exports 
exports.ADD_SAVED = 'ADD_SAVED' 
exports.addToSaved = function addToSaved() { 
    console.log('got to ADD_SAVED'); 

}

ответ

3

Вы импортирования addToSaved, и ожидаете, что он появится на this.props?

Если вы хотите, чтобы он был доступен на this.props, вам нужно передать его в экземпляр компонента:

<MainView addToSaved={addToSaved} /> 
+0

КАЖЕТСЯ вопрос, а также при объявлении компонента с реквизитом убедитесь, что вы добавили проп проверка HTTP : //facebook.github.io/react/docs/reusable-components.html#default-prop-values ​​ –

+0

@bchemy, поэтому я должен все же импортировать addToSaved, но также добавить эту строку в класс MainView? – user3802348

+1

Вам не нужно импортировать 'addToSaved' в' MainView.js', но вам нужно импортировать его в любой файл, создавая «MainView» (то есть через '') и добавьте эту строку , – bcherny

Смежные вопросы