react-router4.0组件外路由怎么跳转,3.0的会,4.0的没有browersHistory了,不能用了
withRouter, 4.0也可以用browserHistory
@Cacivy 我再看看,没看懂这个 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
应该都是push吧
遇到同样的问题,不知道该如何解决!
什么是组件外跳转? 是想在代码里根据判断条件,然后跳转不同的页面吗?
4.0 文档有browersHistory 名字叫 BrowserRouter
只要是路由组件都在组件内部都有this.props.history.push 要不是路由组件 withRouter(组件)
static contextTypes = { router: PropTypes.object.isRequired }
this.context.router
@1340641314 谢谢,应该是这样的 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
hash和brower有什么区别,一直不太清楚。。
??
@FateZeros Main.contextTypes = { router: PropTypes.object.isRequired }
this.context.router.history.push({ pathname: ‘/user/’ + res.loginname }); <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
@pengchengzhong 官网是这样来组件外部跳转组件的 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
@FateZeros 其实就是你的生成的UR是否带#号而已
@pengchengzhong 用withRouter把组件包住就可以用 this.props.history.push('/login'); 这种方式跳转了
this.props.history.push('/login');
另外react-router(v2, v3)里也是要用withRouter把组件包一下,然后再声明一下
YourComponent.contextTypes = { router: PropTypes.object.isRequired };
然后就可以用 this.context.router.push('/login')
this.context.router.push('/login')
另外路由的返回 V4: this.props.history.goBack
this.props.history.goBack
v2, v3: this.context.router.goBack();
this.context.router.goBack();
最后吐嘈一下你的app 回复尾巴,你把它改成markdown不就不会显示html代码了,现在这样看着真不舒服
@liygheart 额,我这是在自己写的一个cnode的react项目里面直接回复的,还没写用markdown组件呢
@liygheart 感谢,已经找到了,谢谢
我用的redux-saga,解决如下:
//utils.js import createHistory from 'history/createBrowserHistory'; export const history = createHistory()
router
import { history } from '../utils/history' export default class App extends Component{ render(){ return ( <Router history={history}> <Switch> <Route exact path="/" component={Home}></Route> <Route path="/Dashboard" component={Dashboard} /> <Route path="/signin" component={Login} /> <Route path="/signup" component={Register}></Route> <Route path="/forget" component={Forget}></Route> </Switch> </Router> )
saga
import { history } from '../utils/history'; import { camelCase } from '../utils'; let watchGenerator = []; let watchList = Object.keys(API); function* fetchEntity(entity, url, data, cb) { // let hide = '' // if(!~url.indexOf('total'))hide = message.loading('加载中...', 0); yield put( entity.request(data) ) const {response, error} = yield call(api.fetchData, {url: url, data}); if(response){ // setTimeout(hide, 0); if(response.data.code == 105){ history.replace('/'); return; }
@pengchengzhong 我的意思是你把这个
来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a> 改成
来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
来自[react-cnode手机版](https://lzxb.github.io/react-cnode/) 就可以了
来自[react-cnode手机版](https://lzxb.github.io/react-cnode/)
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
withRouter, 4.0也可以用browserHistory
@Cacivy 我再看看,没看懂这个 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
应该都是push吧
遇到同样的问题,不知道该如何解决!
什么是组件外跳转? 是想在代码里根据判断条件,然后跳转不同的页面吗?
4.0 文档有browersHistory 名字叫 BrowserRouter
只要是路由组件都在组件内部都有this.props.history.push 要不是路由组件 withRouter(组件)
this.context.router
@1340641314 谢谢,应该是这样的 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
hash和brower有什么区别,一直不太清楚。。
??
@FateZeros Main.contextTypes = { router: PropTypes.object.isRequired }
this.context.router.history.push({ pathname: ‘/user/’ + res.loginname }); <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
@pengchengzhong 官网是这样来组件外部跳转组件的 <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>
@FateZeros 其实就是你的生成的UR是否带#号而已
@pengchengzhong 用withRouter把组件包住就可以用
this.props.history.push('/login');这种方式跳转了另外react-router(v2, v3)里也是要用withRouter把组件包一下,然后再声明一下
然后就可以用
this.context.router.push('/login')另外路由的返回 V4:
this.props.history.goBackv2, v3:
this.context.router.goBack();最后吐嘈一下你的app 回复尾巴,你把它改成markdown不就不会显示html代码了,现在这样看着真不舒服
@liygheart 额,我这是在自己写的一个cnode的react项目里面直接回复的,还没写用markdown组件呢
@liygheart 感谢,已经找到了,谢谢
我用的redux-saga,解决如下:
router
saga
@pengchengzhong 我的意思是你把这个
来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>改成来自[react-cnode手机版](https://lzxb.github.io/react-cnode/)就可以了