2016-11-03 13 views
1

Вот мое действие:Возвращение обещание отправки

export function fetchNearbyUsers(user, position) { 
    return (dispatch) => { 
    const query = new Parse.Query(Parse.User); 
    query.withinKilometers('location', createGeoPoint(position), 10); 
    query.equalTo('gender', user.attributes.interest); 
    query.notEqualTo('objectId', user.id); 
    query.limit(15); 
    return query.find().then((users) => { 
     dispatch({ type: GET_NEARBYUSER_LIST, payload: users }); 
     return Promise.resolve(); 
    }).catch((error) => { 

    }); 
    }; 
} 

теперь вопрос почему не определен этот возврат, когда я карта моей отправки через соединение.

this.props.fetchNearbyUsers(this.props.user, this.props.location).then(() => { 
    this.setState({ refreshing: false }); 
}).catch((error) => { 

}); 

const mapDispatchToProps = dispatch => ({ 
    fetchNearbyUsers: (user, position) => { 
    dispatch(fetchNearbyUsers(user, position)); 
    }, 
}); 

, чтобы это возвращает обещание, когда я доступ к хранилищу через контекст:

const { dispatch } = this.context.store; 
this.setState({ refreshing: true }); 
dispatch(fetchNearbyUsers(this.props.user, this.props.location)).then(() => { 
    this.setState({ refreshing: false }); 
}); 

ответ

2

То, как стрелка функции работают:

var addOne = (arg) => arg+1; 

AddOne возвращается ARG плюс 1, есть подразумеваемый доход - это сокращение от

var addOne = (arg) => { 
    return arg+1; 
} 
не

примечания, если вы используете {} в функции стрелки тела, больше нет подразумеваемого возвращение

Так - ваш код должен быть

const mapDispatchToProps = dispatch => ({ 
    fetchNearbyUsers: (user, position) => { 
    return dispatch(fetchNearbyUsers(user, position)); 
    } 
}); 

или

const mapDispatchToProps = dispatch => ({ 
    fetchNearbyUsers: (user, position) => 
    dispatch(fetchNearbyUsers(user, position)) 
}); 

или

const mapDispatchToProps = dispatch => ({ 
    fetchNearbyUsers: (user, position) => dispatch(fetchNearbyUsers(user, position)) 
}); 
0

Вы используете React-Thunk

что вы делали в отправке:

dispatch(fetchNearbyUsers(this.props.user, this.props.location)).then(() => { 
    this.setState({ refreshing: false }); 
}); 

кажется дубликат, так как это может быть сделано в редукторе, почему вернуть все обещания?