React路由器链接,不发射的动作



我正在使用React Router Router dom链接。我想在渲染新页面之前开除动作。新页面的ComponentDidmount()生命周期方法取决于用户单击帖子用户名时的操作触发。

代码示例:

 <Link to={`/Profile/${post.uid}`}
    onClick={(e) => this.handleItemClick(post.uid)}>{post.name}</Link>

HanditemClick

handleItemClick = (uid) => {changeUserUidState(uid)}

变化列表是被派遣的动作创建者。我在线使用MapStateToprop和MapDispatchToprop,如下

export default connect(({posts, userData}) => ({posts, userData}), ({changeUserUidState}))(Feeds);

动作创造者const changeuid =(uid)=> {return uid}

export const changeUserUidState = uid => ({
  type: 'UPDATE_UID', payload: changeUid(uid),
});

我的有效载荷只能返回UID,我可以简单地返回而不是调用ChangeUID。但是,我将此代码包括在ChangeUID内部的Console.log()一旦单击用户名,但是我的redux工具永远不会启动" update_uid",而我的商店永远不会更新UID。

我该如何调用动作,但是动作的类型永远不会发射?

我的还原

import initialState from './initialState';
export default function (userUid = initialState.userUid, action) {
  switch (action.type) {
    case 'UPDATE_UID':
      return action.payload;
    default:
      return userUid;
  }
}

用户uid的Intialstate是一个空字符串。

看起来您只是在调用函数而不调用dispatch

将操作发送给还原器的是要调用调度。因此,您必须构建作为MAPDISPATCH向Props发送的内容,并构建一个派遣并返回使用它的对象的函数。这样:

const mapDispatch = dispatch => ({
  dispatchChangeUID: (uid) => {
    dispatch(changeUserUidState(uid))
  }
})
export default connect(({posts, userData}) => ({posts, userData}), mapDispatch)(Feeds);

然后,您将在链接中拨打props.dispatchChangeUID

相关内容

  • 没有找到相关文章

最新更新