我正在使用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
。