Redux Thunk不触发返回语句

时间:2019-01-03 16:24:56

标签: reactjs react-redux redux-thunk

我在Stackover流程中看到过类似的问题,但是似乎没有一个问题可以解决我的问题。我正在尝试使用redux thunk调度一个动作,但是不幸的是,我的thunk函数没有触发return语句。

我尝试像往常一样使用redux thunk:

export function handleLikeThunk(id, likeType){
  console.log('thunk1')
  return (dispatch) => {
    console.log('thunk2', id);

  }
}

但是,代码仅到达“ thunk1”消息。它从不显示“ thunk2”

我试图处理一个赞按钮,所以首先导入了redux thunk函数:

import { handleLikeThunk } from '../redux/actions/posts';

我有一个函数,只要按下like按钮,就会调用thunk:

handleLike = (e) => {

    const { likes, id } = this.state

    if(e.target.getAttribute('name') === 'upVote'){
      this.setState((perviouState)=>({
        likes: perviouState.likes + 1
      }));

      handleLikeThunk(id, 'upVote');

    }
    if(e.target.getAttribute('name') === 'downVote' && likes > 0){
      this.setState((perviouState)=>({
        likes: perviouState.likes - 1
      }));

      handleLikeThunk(id, 'downVote');

    }

 }

为了做到这一点,我将组件连接到商店

const mapDispatchToProps = (dispatch) => {
  return { 
    handleLikeThunk: (id, likeType) => dispatch(handleLikeThunk(id, 
likeType)) 
   }
  }

export default connect(null, mapDispatchToProps)(Post)

就像我说的那样,我希望能够使用thunk函数将这些信息发布到后端,但是它永远不会进入thunk函数内部的返回语句中。

1 个答案:

答案 0 :(得分:1)

好像您是在调用raw函数,而不是在mapDispatchToProps中插入原始函数,请尝试将handleLikeThunk(id, 'upVote');更改为this.props.handleLikeThunk(id, 'upVote');