我在角度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中间件。
答案 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生命周期方法中调度您的操作。