Моя средняя функция (templeLoseHp) работает отлично, как задумано. Однако при вызове другой функции все, что находится внутри return function(dispatch)
, не работает.
Вот сломанный пример:
const getEnemyHp = (i) => {
console.log('reached');
return function (getState){
console.log('not reached');
return getState().enemy[i].stats.hp;
}
}
export const enemyLoseHp = (hp, i) => {
return function (dispatch, getState) {
dispatch({
type: 'ENEMY_LOSE_HP',
hp,
i
})
let remainingHp = getEnemyHp(i);
if (remainingHp <= 0) {
killEnemy(i);
}
}
}
export const killEnemy = (i) => {
console.log('reached')
return function (dispatch) {
console.log('not reached')
dispatch({
type: 'KILL_ENEMY',
i
})
}
}
У меня нет этих проблем, если я передаю им getState вручную, как показано в коде ниже, но я не думаю, что именно так я должен это сделать:
const getEnemyHp = (i, getState) => {
console.log(getState().enemy[i].stats.hp)
return getState().enemy[i].stats.hp;
}
export const enemyLoseHp = (hp, i) => {
return function (dispatch, getState) {
dispatch({
type: 'ENEMY_LOSE_HP',
hp,
i
})
let remainingHp = getEnemyHp(i, getState);
if (remainingHp <= 0) {
killEnemy(i, dispatch);
}
}
}
export const killEnemy = (i, dispatch) => {
dispatch({
type: 'KILL_ENEMY',
i
})
}
что мне не хватает?