Может ли кто-нибудь объяснить синтаксис в этом примере ниже? Это из документации https://reduxbundler.com/. Часть, которая сбивает с толку - это doUpdateUser: function.
- Я предполагаю, что userId и attrs являются параметрами.
- Я предполагаю, что => with () - начало функции.
- Откуда отправка и apiFetch? Они также передаются?
- В теле функции мы вызываем dispatch и apiFetch, вызываемый каждый раз?
Я просто запутался в структуре. Спасибо.
export default {
// the name becomes the reducer name in the resulting state
name: 'users',
// the Redux reducer function
reducer: (state = [], action) => {
// ...
return state
},
// anything that starts with `select` is treated as a selector
selectActiveUsers: state => state.users.filter(user => user.isActive),
// anything that starts with `do` is treated as an action creator
doUpdateUser: (userId, attrs) => ({ dispatch, apiFetch }) =>
dispatch({ type: 'USER_UPDATE_STARTED' })
apiFetch('/users', { type: 'PUT' }, attrs)
.then(res => {
dispatch({ type: 'USER_UPDATE_FINISHED' })
})
.catch(err => {
dispatch({ type: 'USER_UPDATE_FAILED' })
}),
// optional init method is ran after store is created and passed the
// store object.
init: store => {
// action creators are bound and attached to store as methods
store.doUpdateUser()
// selectors are also "bound" and attached to store as methods
store.selectActiveUsers()
}
}