【问题标题】:sending a parameter to a function returns Cannot read property 'props' of undefined向函数发送参数返回无法读取未定义的属性“道具”
【发布时间】:2017-01-04 05:05:44
【问题描述】:

我是 react 和 redux 的新手。我试图通过反应路由器发送一个参数,并在一个组件中接收它,该组件负责管理减速器和操作以保持和更新状态。这是我的课程,我的问题发生在那里:

import React from "react";
import {connect} from "react-redux";

import  {getStoriesAction2} from '../../actions/StoryBoardAction2';
import {StoryBoard} from '../composers/story-board/StoryBoard';
class StoryBoardStateManager2 extends React.Component {
render() {
    return (
        <div>
            <StoryBoard storyId={this.props.params.id} stories={this.props.stories2} getStories={()=> this.props.getStories2()}/>
        </div>


    );
}
}

 const mapStateToProps = (state) => {
 return {
    stories2: state.storyBoardReducer2
};
};

 const mapDispatchToProps = (dispatch) => {
  return {
    getStories2:() => {
        dispatch(getStoriesAction2());

    }
  };
 };

 export default connect(mapStateToProps, mapDispatchToProps)  (StoryBoardStateManager2);

在上面的 storyId={this.props.params.id} 正在获取通过路由器发送的参数,它工作得很好,但我需要将此 id 作为参数发送给这个函数:getStoriesAction2 所以我需要更改函数到以下:

getStoriesAction2(this.props.params.id)

添加上述参数后,我得到以下错误:

Uncaught TypeError: Cannot read property 'props' of undefined

这基本上是说无法读取未定义的参数。那么如何将 this.props.params.id 传递给上述函数呢?谁能帮忙找出我的问题在哪里?

【问题讨论】:

    标签: javascript reactjs redux react-router react-redux


    【解决方案1】:

    只需以这种方式更改您的 mapDispatchToProps:

     const mapDispatchToProps = (dispatch) => {
      return {
        getStories2:(id) => {
            dispatch(getStoriesAction2(id));
    
        }
      };
     };
    

    而且您可以更改 getStories2 绑定:

     getStories={()=> this.props.getStories2(this.props.params.id)}
    

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2022-01-24
      • 2020-11-04
      • 2020-12-19
      相关资源
      最近更新 更多