reactjs 多次调用react-redux异步get方法

brc7rcf0  于 2022-12-22  发布在  React
关注(0)|答案(1)|浏览(151)

我正在做我的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)

zqry0prt

zqry0prt1#

因为你写useEffect的方式

useEffect(()=>{ 
  props.fetchArticles()
  // you did not pass any dependency array
} )

由于您没有传递任何依赖项数组,useEffect内的函数将在每次重新呈现时被调用。使用connect,您订阅了存储。每次订阅检测到状态更改时,您的组件将重新呈现,由于您没有传递依赖项数组,useEffect内的函数将运行,这将一次又一次地获取数据。

useEffect(()=>{ 
  props.fetchArticles()
  // empty dependency array means run only when initial mounting
},[] )

相关问题