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) => 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
,因此尝试在组件内部调用它只会失败(如您所见)。顺便说一句,您应该将函数分配给userAction
和elementsAction
,不要立即调用dispatch
。
类似placesAction: (id) => 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:未定义调度的主要内容,如果未能解决你的问题,请参考以下文章