在角度为2

时间:2016-07-07 18:38:56

标签: angular redux

我在角度2中使用ng-redux模块,我不知道做异步操作的更好方法是什么。例如,我需要从服务器获取一些数据。我可以使用异步操作创建器redux-thunk中间件来完成它: 我将创建一个返回函数的动作:

export function fetchData() {
    return function (dispatch) {
        dispatch({
            type: 'FETCH_DATA_REQUEST'
        });
        return fetch(url)
            .then(response => response.json())
            .then(json => dispatch({type: 'FETCH_DATA_SUCCESS', data: json}))
            .catch(error => dispatch({type: 'FETCH_DATA_ERROR', error: error
        }
    }
}
dispatch(fetchData());

或者我可以在控制器中执行HTTP请求,我将手动执行调度方法:

dispatch({
    type: 'FETCH_DATA_REQUEST'
});
http(url).then(data => {
     dispatch({
        type: 'FETCH_DATA_SUCCESS',
        data: json
    });
}).catch(error => {
    dispatch({
        type: 'FETCH_DATA_ERROR',
        error: error
    });
});

建议使用哪种方法?我认为第二种方法更容易,但为什么还存在redux-thunk中间件。

1 个答案:

答案 0 :(得分:1)

绝对是推荐的第一种方法,特别是如果你使用的是中间件库。

唯一需要记住的是在#! /usr/bin/env python3 def main(): stock = dict(apple=Number(100)) item = 'apple' print('Memory location of stock[item]:', id(stock[item])) stock[item] -= 1 print('Memory location of stock[item]:', id(stock[item])) stock[item] = stock[item] - 1 print('Memory location of stock[item]:', id(stock[item])) class Number: __slots__ = '__value' def __init__(self, value): self.__value = value def __repr__(self): return repr(self.__value) def __sub__(self, other): type_of_self = type(self) if isinstance(other, type_of_self): other = other.__value return type_of_self(self.__value - other) def __isub__(self, other): if isinstance(other, type(self)): other = other.__value self.__value -= other return self if __name__ == '__main__': main() React生命周期方法中调度您的操作。