Есть приложение Redux. Я только начал изучать Redux, поэтому не все еще понимаю. У меня есть три коротких вопроса по этому коду.
Я закомментировал строки, по которым есть вопросы:
Это reducer:
import { searchFilter } from "../containers/app";
export function reducer(state = {}, action) {
switch (action.type) {
case "SET_SHIFT":
return Object.assign({}, state, {
shift: action.shift
});
case "SET_SEARCH":
return Object.assign({}, state, {
search: action.search.toLowerCase()
});
case "RUN_FILTER":
var newData = state.data[action.shift || state.shift].filter(x => {
return (
x["planeTypeID.code"].toLowerCase().includes(action.search || state.search)
);
});
return Object.assign({}, state, {
shift: action.shift || state.shift, // строка1
search: action.search || state.search, // строка2
filteredData: searchFilter(state.search, newData)
});
case "LOAD_DATA_START":
return Object.assign({}, state, {
day: action.day
});
case "LOAD_DATA_END":
var newData = action.payload.data[state.shift].filter(x => {
return (
x["planeTypeID.code"] &&
x["planeTypeID.code"].toLowerCase().includes(action.search || state.search) //строка3
);
});
return Object.assign({}, state, {
data: action.payload.data,
shift: Object.keys(action.payload.data)[0],
filteredData: searchFilter(state.search, newData) //строка4
});
default:
return state;
}
}
1) Почему в строке 1 мы пишем
action.shift || state.shift
? а не просто:
action.shift
? В строке 2 то же самое: почему мы пишем
action.search || state.search
, а не просто:
action.search
?
2) Почему в строке 3 мы пишем:
x["planeTypeID.code"] && x["planeTypeID.code"].toLowerCase().includes(action.search || state.search)
а не просто:
x["planeTypeID.code"].toLowerCase().includes(action.search || state.search)
?
planeTypeID.code
- это свойство объекта API.
3) Почему в строке 4
searchFilter
это вызов функции? И почему мы передаем такие параметры
(state.search, newData)
этому вызову? Третий вопрос может быть сложный(а может нет) из-за нехватки информации, то ответьте хотя бы на первые два вопроса