0

我是 Web 开发的新手,作为项目的一部分,我制作了一个 Django React Redux 应用程序。frontentd 有一个带有表单条目的组件 - 当提交表单时,该组件调用一个操作,该操作将 axios 请求发送到后端的 python twitter 爬虫脚本。该脚本返回一个包含字符串数组的响应(推文在数组内)。然后,我尝试将 response.data 中包含的数组作为有效负载分派给减速器。但是,我不断收到错误消息,说我发送的有效负载未定义。

这是被调用的python方法的返回语句——语料库是一个字符串数组。

return JsonResponse({"results:": corpus})

这是向 python 方法发送 GET 请求的操作的代码。然后它在 json 对象中返回字符串数组。

// GET_TWEETS - get list of tweets from hashtag search 
export const getTweets = (hashtag) => dispatch => {
axios
  .get('http://localhost:8000/twitter_search', {
    params: {text: hashtag}
  })
  .then(res => {
    console.log(res.data); //check if python method returns corpus of tweets
    //const results = Array.from(res.data.results);
    dispatch({
      type: GET_TWEET,
      payload: res.data.results
    });
  })
  .catch(err => console.log(err)); 
}

控制台日志显示该对象已从 python 脚本成功返回。 控制台日志

这是我的减速器的代码。我希望我的操作包含字符串数组,然后将该字符串数组分配给状态中的“推文”,以便我可以将其返回给组件,然后从组件访问数组,然后显示 thisx 推文数组的内容前端

import { GET_TWEET } from '../actions/types';

const initialState = {
  tweets: []
}

export default function(state = initialState, action) {
  console.log(action.payload)
  switch(action.type) {
    case GET_TWEET:
      return {
        ...state,
        tweets: [...action.payload]
      }
    default:
      return state;
  }
}

另外,这是我想要接收字符串数组的组件的一些代码,我希望我已经正确设置了这部分:

export class Tweets extends Component {

  static propTypes = {
    tweets: PropTypes.array.isRequired,
    getTweets: PropTypes.func.isRequired
  }

...

const mapStateToProps = state => ({
  tweets: state.TweetsReducer.tweets
});

export default connect(mapStateToProps, { getTweets })(Tweets);

这是我从控制台得到的错误。控制台记录操作的有效负载还显示其值未定义:未定义错误

我已经尝试解决这个问题好几天了,但我完全迷失了,我有预感解决这个问题很简单......

4

0 回答 0