Dan Abramov tarafından yayınlanır Redux çevrimiçi öğreticiler anlamaya çalışıyorum için çalışmıyor. Şu anda aşağıdaki örneğe duyuyorum: sözdizimi çalışmıyor ardından todoReducer fonksiyonu içinde,Yayılması Operatör Redux/ES6 tabanlı numunenin
// Individual TODO Reducer
const todoReducer = (state, action) => {
switch(action.type) {
case 'ADD_TODO':
return {
id: action.id,
text: action.text,
completed: false
};
case 'TOGGLE_TODO':
if (state.id != action.id) return state;
// This not working
/*
return {
...state,
completed: !state.completed
};
*/
//This works
var newState = {id: state.id, text: state.text, completed: !state.completed};
return newState;
default:
return state;
}
};
//TODOS Reducer
const todos = (state = [], action) => {
switch(action.type) {
case 'ADD_TODO':
return [
...state,
todoReducer(null, action)
];
case 'TOGGLE_TODO':
return state.map(t => todoReducer(t, action));
default:
return state;
}
};
//Test 1
const testAddTodo =() => {
const stateBefore = [];
const action = {
type: 'ADD_TODO',
id: 0,
text: 'Learn Redux'
};
const stateAfter = [{
id: 0,
text: "Learn Redux",
completed: false
}];
//Freeze
deepFreeze(stateBefore);
deepFreeze(action);
// Test
expect(
todos(stateBefore, action)
).toEqual(stateAfter);
};
//Test 2
const testToggleTodo =() => {
const stateBefore = [{id: 0,
text: "Learn Redux",
completed: false
}, {
id: 1,
text: "Go Shopping",
completed: false
}];
const action = {
type: 'TOGGLE_TODO',
id: 1
};
const stateAfter = [{
id: 0,
text: "Learn Redux",
completed: false
}, {
id: 1,
text: "Go Shopping",
completed: true
}];
//Freeze
deepFreeze(stateBefore);
deepFreeze(action);
// Expect
expect(
todos(stateBefore, action)
).toEqual(stateAfter);
};
testAddTodo();
testToggleTodo();
console.log("All tests passed");
Sayı geçerli:
İşte Reducer composition with Arrays
Yukarıdaki örnekten şu benim uygulama kodu:
return {
...state,
completed: !state.completed
};
Ben Firefox sürüm 44.0 kullanıyorum ve bana konsolunda aşağıdaki hata gösteriyor:
Invalid property id
Şimdi, Firefox'un şu anki sürümünün Spread operatörünü desteklemesi gerektiğini düşünüyorum. Eğer değilse, bu sözdizimini desteklemek için bağımsız bir Polyfill eklemek için herhangi bir yolu var mı? İşte
da JSFiddle
: [! '...' bir operatör değil] (https://stackoverflow.com/questions/37151966/what -is-spreadelement-in-ECMAScript-belgeleri-is-o-sam E-as-yayılmış-oper/37152508 # 37152508) –