Не могу сбросить переменную в хранилище - PullRequest
0 голосов
/ 28 мая 2018

В данный момент я все еще новичок в Redux.

В приложении есть страница с категориями, при нажатии на одну из которых открывается новое окно со списком доступных записей.Это окно имеет положение в своем состоянии, с которого вы можете начать запрашивать данные.

Проблема в том, что, когда приложение запускает окно, выполняет действие, которое очищает состояние.Но по какой-то причине переменная с позицией не меняется.

(я знаю, я могу просто переместить эту позицию в переменную компонента, но как новичок, я хочу понять проблему)

Действие для загрузки элементов:

getLatestDataInCategory: (category, currNum) => {
return (dispatch) => {
    dispatch({type: actionTypes.DATA_IN_CATEGORY_LOADING_ENABLED})
    fetch('http://************/api/rf_api/get_rf_list.php?category='+category+'&startFrom='+currNum)
    .then(res => res.json())
    .then((res) => {
        dispatch({type: actionTypes.DATA_IN_CATEGORY_LOADING_DISABLED})
        dispatch({type: actionTypes.DATA_IN_CATEGORY_ADD_DATA, payload: {data: res.results}})
        dispatch({type: actionTypes.DATA_IN_CATEGORY_ADD_NUM})
    }).catch(error => {
        dispatch({type: actionTypes.DATA_IN_CATEGORY_ERROR, payload: {error: error}})
        dispatch({type: actionTypes.DATA_IN_CATEGORY_LOADING_DISABLED})
        console.log(error)
        })

 }
}

Действие для очистки данных:

clearData: () => {
return (dispatch) => {
    dispatch({type: actionTypes.DATA_IN_CATEGORY_CLEAR})
 }
}

Редукторы:

export const reducersDataInCategory = (state = initialStateDataInCategory, action) => {
   const {type, payload} = action

   switch(type) {
        case actionTypes.DATA_IN_CATEGORY_LOADING_ENABLED:
            return{...state,
            isLoading: true}
            break
        case actionTypes.DATA_IN_CATEGORY_LOADING_DISABLED:
            return{...state,
            isLoading: false}
            break
        case actionTypes.DATA_IN_CATEGORY_ADD_DATA:
            return{...state,
            data: [...state.data, ...payload.data],
            error: null}
            break
        case actionTypes.DATA_IN_CATEGORY_ERROR:
            return{...state,
            error: payload.error}
            break
        case actionTypes.DATA_IN_CATEGORY_ADD_NUM:
            return{...state,
            currNum: state.currNum + 30}
            break
        case actionTypes.DATA_IN_CATEGORY_CLEAR:
            return{...state,
            currNum: 0,
            data: []}
            break
        default:
            return state
            break
   }
}

в компоненте:

componentDidMount() {
    this.props.clearData()
    const categoryId = this.props.navigation.getParam('categoryId', 1)
    this.props.getLatestFormulasInCategory(categoryId, this.props.currNum)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...