我正在做我的react blog项目,我正在使用一个API(redux-react)发出一个get请求,但是我的问题是这个函数被连续调用,而不是只被调用一次
下面是我的代码和图片显示连续API调用请任何人可以帮助出行动文件在那里我作出d api调用
export function fetchArticles(){
return function(dispatch){
const url = `${baseUrl}/articles/list`
return axios.get(url).then(res =>{
console.log(res.data)
dispatch( {type:articles.DISPLAY_ARTICLE, payload:res.data.data})
})
}
}
缩径锉
function displayArticles (state=initialState, action){
if(action.type===DISPLAY_ARTICLE){
console.log(state)
return Object.assign({}, state,{
articles: state.articles.concat(action.payload)
})
}
console.log(state)
return state
}
function rootReducer(state=initialState, action){
switch(action.type){
case DISPLAY_ARTICLE:
return displayArticles(state, action)
break;
组件文件
function mapStateToProp (state){
return {articles: state.articles}
}
const Index = (props)=>{
useEffect(()=>{
props.fetchArticles()
}
)
export default connect(
(mapStateToProp),
{fetchArticles}
)(Index)
1条答案
按热度按时间zqry0prt1#
因为你写
useEffect
的方式由于您没有传递任何依赖项数组,
useEffect
内的函数将在每次重新呈现时被调用。使用connect
,您订阅了存储。每次订阅检测到状态更改时,您的组件将重新呈现,由于您没有传递依赖项数组,useEffect
内的函数将运行,这将一次又一次地获取数据。