作为一个不可变对象,当状态改变时,我们会创建一个新对象,Angular 会重新绘制所有 DOM。如果操作是由输入元素分派的,则失去焦点。
我已经分叉了一个示例 plunk 来重现该行为: http: //plnkr.co/yb53ij
在实际应用中,我使用了表单 API 中的“.debounceTime()”,但这对用户体验来说似乎不太好。有一种方法可以避免这种情况,或者我错过了什么?
减速机代码:
export const todos = (state = [{text: 'Edit my input...'}], {type, payload}) => {
switch(type){
case ADD_TODO: ...
case UPDATE_TODO: ...
case COMPLETE_TODO: ...
case DELETE_TODO: ...
case 'REPEAT_TODO':
// Creates new state:
return state.map(todo => {
return todo.id !== payload.todo.id ?
todo :
Object.assign({}, todo, {times: payload.times})
});
default:
return state;
}
谢谢!