【问题标题】:Error: must return a plain object, instead received undefined错误:必须返回一个普通对象,而不是收到未定义的
【发布时间】:2018-04-27 00:55:00
【问题描述】:

我的控制台输出正在生成正确的对象,然后在数组映射的末尾崩溃,我无法弄清楚 undefined 是什么。这是我的 reducer、action 和 list 实现。

减速器

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
      case LOCATION_FETCH_SUCCESS:
          return action.payload;
      case POSTS_FETCH_FAIL:
        return state;
    default:
      return state;
  }
};

动作创建者

 export const locationFetch = () => {
   const geoFire = new GeoFire(firebase.database().ref('/geoLocations'));
  var keys = [];
  var snaps = [];
  return (dispatch) => {
    navigator.geolocation.getCurrentPosition(
        (position) => {
          const currentLocation = [position.coords.latitude, position.coords.longitude];
          const radius = 0.5;
          const geoQuery = geoFire.query({ center: currentLocation, radius });
        var onKeyEntered = geoQuery.on("key_entered", (key) => {
            keys.push(key);
            console.log(key);
          });
        var onKeyReady = geoQuery.on('ready', () => {

          keys.map((key) => {

            firebase.database().ref('/posts').child(key).
                  once('value').then((snapshot) => {

                    snaps.push(snapshot.val());
                  //  console.log(snaps);
                    dispatch({ type: LOCATION_FETCH_SUCCESS, payload: snaps });


               });//.catch(() => postsFetchFail(dispatch));

             });
        });
   });
};
};

ma​​pstatetoprops

const mapStateToProps = state => {

var objectArray = _.values(state.posts)
objectArray = _.flatten(objectArray);
//console.log(objectArray);
  objectArray.map((post) => {
    const { dishname,
      restaurant,
      category,
      likesCount
      } = post;
      console.log({ dishname , restaurant });
    return { dishname, restaurant };
});
};

export default connect(mapStateToProps, {locationFetch})(DshdList);

控制台的最后输出和我得到的错误信息如下:

10:43:33 PM
Object {
  "dishname": "shrimp bun",
  "restaurant": "momofuku ",
}
10:43:38 PM
▼mapStateToProps() in Connect(DshdList) must return a plain object. Instead received undefined

我不明白这是哪里出了问题。

【问题讨论】:

    标签: firebase react-native redux redux-thunk geofire


    【解决方案1】:

    您必须从 ma​​pStateToProps 函数返回您缺少的对象。像下面这样放置一个返回语句

    return objectArray.map(...);

    希望这会有所帮助。

    【讨论】:

    • 我已经在 mapstatetoprops 函数中映射出对象数组。我需要在post上再做一次吗?还是我需要以不同的方式返回映射
    • 看,你需要从 mapStateToProps 返回一个对象,在你的情况下它丢失了。如果您认为您已经处理了数组,那么只需返回它,这取决于您的要求。由于没有明确的 return 语句,未定义是从 mapStateToProps 函数返回的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2016-10-01
    • 1970-01-01
    • 2016-06-22
    • 2017-07-09
    • 2018-03-22
    • 2017-06-06
    相关资源
    最近更新 更多