目前我还是Redux的新人。
App有一个包含类别的页面,单击其中一个会打开一个新窗口,其中包含可用条目列表。 此窗口的位置处于可以开始查询数据的位置。
问题是,当应用启动窗口时,执行清除状态的操作。但由于某种原因,具有位置的变量不会改变。
(我知道,我可以将此位置移动到组件变量,但作为新手,我想了解问题)
下载项目的行动:
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)
}