【发布时间】:2017-01-02 12:53:19
【问题描述】:
我正在学习构建一个 pokedex 应用程序,它会在您输入名称并点击提交后为您提供有关 pokemon 的信息。它必须经过 2 次调用才能获得正确的信息,第 1 次获得它的身高和体重,然后第 2 次获得它的描述(例如,“Charmander 通常可以在炎热地区找到......”)。下面是我的动作分解。
export const fetchPokemon = function (pokemonName) {
return function (dispatch) {
dispatch(requestPokemon(pokemonName))
const requestURL = `http://pokeapi.co/api/v2/pokemon/${pokemonName}/`
return $.ajax({
url: requestURL,
}).done(function (data) {
dispatch(receivePokemon(data))
return fetchPokemonDescription(pokemonName)
}).done(function (res) {
dispatch(receivePokemonDescription(res))
})
}
}
...
export const fetchPokemonDescription = function (pokemonName) {
return function (dispatch) {
dispatch(requestPokemonDescription(pokemonName))
const requestURL = `http://pokeapi.co/api/v2/pokemon-species/${pokemonName}/`
return $.ajax({
url: requestURL,
})
}
}
我应该为每个调用设置一个单独的减速器吗?查看有关 reducer composition 的文档,我不确定拥有 1 个减速器与 2 个减速器是否会更清洁。这两个调用并不相互依赖,但是每个不同的 pokemon 输入都需要进行两个调用,并且从两者返回的数据都属于一个 pokemon,所以我认为它应该在一个 reducer 中处理状态的一部分.
【问题讨论】:
标签: javascript reactjs redux react-redux reducers