将数据从Redux中的组件传递给动作创建者

将数据从Redux中的组件传递给动作创建者,redux,react-redux,Redux,React Redux,我试图通过将13级传递给我的动作创建者来改变缩放级别 但是得到这个错误: 错误:给定操作“ZOOM_SELECTED”,减速机“ZOOM”返回未定义。若要忽略操作,必须显式返回上一个状态。如果希望此减缩器不包含任何值,可以返回null而不是undefined 您知道如何更改当前状态,将新的缩放级别传递到“我的动作创建者”中吗 render() { console.log(this.props.zoom) return ( <d

我试图通过将13级传递给我的动作创建者来改变缩放级别

但是得到这个错误:

错误:给定操作“ZOOM_SELECTED”,减速机“ZOOM”返回未定义。若要忽略操作,必须显式返回上一个状态。如果希望此减缩器不包含任何值,可以返回null而不是undefined

您知道如何更改当前状态,将新的缩放级别传递到“我的动作创建者”中吗

    render() {
        console.log(this.props.zoom)
        return (
            <div>
                <Map className='map' center={this.props.mapCenter} zoom={this.props.zoom}>
                    <TileLayer
                    attribution='&amp;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))
    }
}