采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我的bossinfo.js中this.props.location.pathname等于this.props.redirect
{redirect&&redirect!==path?<Redirect to={this.props.redirect} />:null}
你要选择头像以后再点提交,
逻辑里不选择头像avatar的值就为空,redirectTo的值会加上'info)
要跳到boss界面的整个逻辑是:
1、在bossinfo.js中,利用AvatarSelector组件为子元素props添加了一个函数,并且该函数就是为state设置avatar值。
2、avatar值通过保存按钮(也就是update函数)提交到数据库,并且数据库返回的data中包含avatar这个值。
3、数据库返回data值后(返回avatar后)通过dispatch=>authSuccess函数将data值(avatar)放在action.payload上,并且通过user这个函数去判断action.type时执行了getRedirectPath(action.payload)函数,同时将state的值更新(这一步将redirectTo字段放进state对象中)。
4、通过reducer.js整合所有state后,在index.js中利用createStore设置了整个页面的props~也就是加入了props.redirectTo~
5、最终bossinfo.js中执行的判读语句{this.props.redirectTo ? <Redirect to={this.props.redirectTo}></Redirect> : null} 才得以实现跳转操作~
老师的代码中. util.js是传入(payload, avatar),其中,payload包含了avatar的信息,但是这个avatar一直为空。所以需要从payload中提取avatar.
export function getRedirectPath(payload) { let type = payload.type; let avatar = payload.avatar; let url = (type==='boss')?'/boss':'/genius' if(!avatar){ url += 'info' } return url}
老师还是跳转不到boss界面,我改成payload.avatar这个值为空
export function update(data){ return dispatch=>{ axios.post('/user/update', data) .then(res=>{ if (res.status===200&&res.data.code===0) { check一下 有没有走到这边 dispatch(authSuccess(res.data.data)) } else { dispatch(errorMsg(res.data.msg)) } }) } }
登录后可查看更多问答,登录/注册
全网唯一的React 16+Redux+React Router4实战课程,学到手是你的真本领!
1.8k 10
1.3k 9
1.0k 8
1.2k 8
1.2k 7