为了账号安全,请及时绑定邮箱和手机立即绑定

使用 dispatch() 时未调用 Reducer

使用 dispatch() 时未调用 Reducer

蝴蝶不菲 2021-06-09 13:27:34
我试图QResults.js通过调用我传递给它的函数来从子组件()更新我的 redux 状态,但是当我使用该函数时我的减速器没有被到达。QResults.js有一个我正在点击的链接,我希望通过我的一个减速器来改变我的状态。我的 mapDispatchToProps() 函数做错了吗?频道.jsclass Channel extends Component {    ...    render() {          return (        ...         <div>            <QResults             allQueryResults={this.state.queryState}             requestHandler={queueNewRequest}/>         </div>        );    }}function mapStateToProps(state) {   ...} function mapDispatchToProps(dispatch) {    return ({        queueNewRequest: (newRequestData) => { dispatch(queueNewRequest(newRequestData)) }    })} export default withRouter(connect(mapStateToProps , mapDispatchToProps )(Channel))QResults.jsexport default class QResults extends Component {    render() {        const {requestHandler} = this.props        return (            <ul>                {this.props.allQueryResults.items.map((trackAlbum, i) =>                    <li key={i}>                        <a href='#'                         onClick={                            () => requestHandler(trackAlbum.name)}>                            Some link                        </a>                    </li>                )}            </ul>        )    }}
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您的操作不会将操作分派给减速器。你只是将它作为参数传入。我还将参数的传递稍微更新为一个名为“payload”的键。尝试像这样更新它


我在这里创建了一个最小的沙箱


如果您单击其中一项并检查您的控制台,您可以看到正在调用减速器。


export const QUEUE_NEW_REQUEST = "QUEUE_NEW_REQUEST";


export function queueNewRequest(newRequestInfo) {

  return dispatch =>

    dispatch({

      type: QUEUE_NEW_REQUEST,

      payload: newRequestInfo

    });

}


查看完整回答
反对 回复 2021-06-11
  • 1 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信