将数据从Redux中的组件传递给动作创建者
我试图通过将13级传递给我的动作创建者来改变缩放级别 但是得到这个错误: 错误:给定操作“ZOOM_SELECTED”,减速机“ZOOM”返回未定义。若要忽略操作,必须显式返回上一个状态。如果希望此减缩器不包含任何值,可以返回null而不是undefined 您知道如何更改当前状态,将新的缩放级别传递到“我的动作创建者”中吗将数据从Redux中的组件传递给动作创建者,redux,react-redux,Redux,React Redux,我试图通过将13级传递给我的动作创建者来改变缩放级别 但是得到这个错误: 错误:给定操作“ZOOM_SELECTED”,减速机“ZOOM”返回未定义。若要忽略操作,必须显式返回上一个状态。如果希望此减缩器不包含任何值,可以返回null而不是undefined 您知道如何更改当前状态,将新的缩放级别传递到“我的动作创建者”中吗 render() { console.log(this.props.zoom) return ( <d
render() {
console.log(this.props.zoom)
return (
<div>
<Map className='map' center={this.props.mapCenter} zoom={this.props.zoom}>
<TileLayer
attribution='&copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<Marker position={this.props.mapCenter}>
<Popup>
A pretty CSS3 popup. <br /> Easily customizable.
</Popup>
</Marker>
</Map> <button onClick={() => this.props.selectZoom((13))} >Ändra zoom</button>
</div >
)
}
};
const mapStateToProps = (state) => {
return {
zoom: state.zoom,
mapCenter: state.mapCenterPosition
}
};
const mapDispatchToProps = dispatch => {
return {
selectZoom: () => dispatch(selectZoom())
}
}
export default connect(mapStateToProps, mapDispatchToProps)(MapComponent); ```
减速器
const zoomReducer = (state = 8, action) => {
if(action.type === 'ZOOM_SELECTED') {
return action.payload;
} else {
return state;
}
};
问题出在
mapDispatchToProps
中-您没有将缩放传递到回调中的操作。您需要这样做:
const mapDispatchToProps = dispatch => {
return {
selectZoom: (zoom) => dispatch(selectZoom(zoom))
}
}
没有它,就不会传递任何参数,有效负载的值为undefined
。由于您直接在减速器中返回有效负载,因此它看起来好像没有返回任何内容
const mapDispatchToProps = dispatch => {
return {
selectZoom: (zoom) => dispatch(selectZoom(zoom))
}
}