ReferenceError:未定义调度

Posted

技术标签:

【中文标题】ReferenceError:未定义调度【英文标题】:ReferenceError : Dispatch is not defined 【发布时间】:2017-05-21 18:27:09 【问题描述】:

我有一个连接器,它具有 mapDispatchToProps 和 mapStateToProps 函数,我需要从我的主组件调度一个操作。

我在尝试发送 fetchPlaces(this.props.user.id) 时收到一条错误消息,提示未定义发送。

this.props.user.id 的值为 1。

我需要获取用户 ID 并将其传递给 fetchPlaces,它让我获取用户的位置。我不知道该怎么做。

连接器

const mapStateToProps = function (store) 
    return 
        elements: store.elements.elements,
        places: store.places.places,
        geocode : store.geocode.geocode,
        user : store.user.user
    ;
;

const mapDispatchToProps = function (dispatch) 
    return 
        userAction : dispatch(fetchUser()),
        elementsAction : dispatch(fetchCategories()),
        placesAction: (id) =>  dispatch(fetchPlaces(id))         
    


class BasicinfoConnector extends React.Component
  render() 
      console.log(this.props.user);
      if(typeof this.props.user.id != "undefined")
          return (
              <Basicinfo elements=this.props.elements places=this.props.places geocode=this.props.geocode user=this.props.user/>
          );
      
      else
          return null;
      
  


export default Redux.connect(mapStateToProps, mapDispatchToProps)(BasicinfoConnector);

组件:

componentWillMount() 
        console.log(this.props);
        console.log(this.props.user.id);
        dispatch(fetchPlaces(this.props.user.id))
    

placesAction: (id) =&gt; dispatch(fetchPlaces(id)) 的语法正确吗?

更新

我改了componentWillMount

componentWillMount() 
        console.log(this.props);
        console.log(this.props.user.id);
        dispatch(this.props.placesAction(this.props.user.id))
    

和 mapDispatchToProps :

const mapDispatchToProps = function (dispatch) 
    return 
        userAction: bindActionCreators(fetchUser, dispatch),
        elementsAction: bindActionCreators(fetchUser, dispatch),        
        placesAction: (id) =>  dispatch(fetchPlaces(id)) 
    

仍然有同样的错误。

【问题讨论】:

“我需要从我的主要组件中调度一个动作” 你会为此调用相应的道具。例如。 this.props.placesAction(this.props.user.id)。组件本身无权访问dispatch,因此尝试在组件内部调用它只会失败(如您所见)。顺便说一句,您应该将函数分配给userActionelementsAction不要立即调用dispatch 类似placesAction: (id) =&gt; dispatch(fetchPlaces(id)) 你已经有了,这是正确的。 Oki,所以我添加了bindActionCreators,参考来自github.com/reactjs/react-redux/issues/89 @FelixKling 更新了更改,仍然存在错误。我还有什么遗漏吗? 【参考方案1】:

您需要将属性传递到下一个级别,或者通过像这样共享您的所有道具:

<Basicinfo ...this.props />

或者只有你想要的那些

<Basicinfo placesAction=(id) => this.props.placesAction(id) />

【讨论】:

以上是关于ReferenceError:未定义调度的主要内容,如果未能解决你的问题,请参考以下文章

ReferenceError:未定义提取

未定义函数 - 未捕获的 ReferenceError

打字稿 - 未捕获的 ReferenceError:未定义导出

ReferenceError: $ 未定义

ReferenceError:未定义 DartObject

ReferenceError:未定义解析