Я часто вижу код при использовании redux-thunk, внутренняя функция, возвращающая что-то, например, в официальном Redux asyn c пример :
Код :
const fetchPosts = subreddit => dispatch => {
dispatch(requestPosts(subreddit))
return fetch(`https://www.reddit.com/r/${subreddit}.json`)
.then(response => response.json())
.then(json => dispatch(receivePosts(subreddit, json)))
}
const shouldFetchPosts = (state, subreddit) => {
// return true or false
}
export const fetchPostsIfNeeded = subreddit => (dispatch, getState) => {
if (shouldFetchPosts(getState(), subreddit)) {
return dispatch(fetchPosts(subreddit))
}
}
, поэтому fetchPostsIfNeeded()
- это гром, и fetchPosts()
. Они оба возвращают функцию, и функция тоже что-то возвращает. Теперь эта функция фактически вызывается промежуточным программным обеспечением, и я не думаю, что возвращаемое значение когда-либо использовалось. Так почему же внутренняя функция внутри thunk продолжает что-то возвращать вместо того, чтобы просто вызывать это? Код мог быть:
const fetchPosts = subreddit => dispatch => {
dispatch(requestPosts(subreddit))
fetch(`https://www.reddit.com/r/${subreddit}.json`)
.then(response => response.json())
.then(json => dispatch(receivePosts(subreddit, json)))
}
const shouldFetchPosts = (state, subreddit) => {
// return true or false
}
export const fetchPostsIfNeeded = subreddit => (dispatch, getState) => {
if (shouldFetchPosts(getState(), subreddit)) {
dispatch(fetchPosts(subreddit))
}
}