dva 路由跳轉示例
此篇文章未經過全部驗證,僅供參考
轉載自:https://www.cnblogs.com/juexin/p/9407391.html
1.從props取出並傳遞history
取 const { history } = this.props
用 <button onClick={ () => history.push('/') }>go back home</button>
2.withRouter, Link
withRouter:
import { withRouter, Link } from 'dva/router'
<button onClick={ () => history.push('/') }>go back home</button>
export default withRouter(Counter);
Link:
import { withRouter, Link } from 'dva/router'; // 引入元件
<Link to='/'>home page</Link> 使用
3.routerRedux
import { routerRedux } from 'dva/router';
effects: {
*asyncDecr({ payload }, { call, put }) {
yield call(delay, 1000);
yield put({type: 'decrement' });
yield put( routerRedux.push('/') ); // 路由跳轉
}
},
使用query-string庫可以將物件轉化為url引數:
effects: {
*asyncDecr({ payload }, { call, put }) {
yield call(delay, 1000);
yield put({type: 'decrement' });
// yield put( routerRedux.push('/') ); // 路由跳轉
yield put( routerRedux.push({
pathname: '/',
search: queryString.stringify({
from: 'product',
to: 'home'
})
}) ); // 路由跳轉
}
},
效果:
http://localhost:8000/?from=product&to=home
完整程式碼:
第一個是model檔案products.js 第二個是routes下的UI檔案ProductPage.js
import { delay } from 'dva/saga';
import { routerRedux } from 'dva/router';
import queryString from 'query-string';
export default {
namespace: 'products',
state: {
counter: 1,
},
effects: {
*asyncDecr({ payload }, { call, put }) {
yield call(delay, 1000);
yield put({type: 'decrement' });
// yield put( routerRedux.push('/') ); // 路由跳轉
yield put( routerRedux.push({
pathname: '/',
search: queryString.stringify({
from: 'product',
to: 'home'
})
}) ); // 路由跳轉
}
},
reducers: {
'increment'(state, action) {
return {
counter: state.counter + 1
}
},
'decrement'(state, action) {
return {
counter: state.counter - 1
}
}
}
}
import React, { Component } from 'react';
import { connect } from 'dva';
import propTypes from 'prop-types';
import { Button } from 'antd';
import styles from './ProductPage.css';
import { increment, asyncDecr } from '../actions';
class ProductPage extends Component {
constructor(props, context) {
console.log(props);
super();
}
render() {
const { products, dispatch, increment, asyncDecr } = this.props;
return (
<div className={styles.wrapper}>
<div className={styles.title}>結果 {products.counter}</div>
<div>
<p className={styles['p-wrapper']}>
<Button type="primary" onClick={()=>dispatch({type:'products/increment',payload:1})}>incr</Button>
<Button type="primary" onClick={()=>dispatch({type:'products/asyncDecr',payload:1})}>incr</Button>
</p>
<p className={styles['p-wrapper']}>
<Button type="primary" onClick={()=>increment()}>increment</Button>
<Button type="primary" onClick={()=>asyncDecr()}>asyncDecr</Button>
</p>
<Button type="primary">decr</Button>
</div>
</div>
);
}
}
ProductPage.propTypes = {
counter: propTypes.object
};
const mapStateToProps = (state) => {
return {
products: state.products,
};
};
export default connect(mapStateToProps, { increment, asyncDecr })(ProductPage);
這裡是最後一種路由跳轉方式,可以輕鬆應對各種場景 https://www.tipsns.com/read/34.html
相關文章
- React 小案例 路由跳轉React路由
- 前端路由跳轉基本原理前端路由
- vue axios路由跳轉取消所有請求VueiOS路由
- React-navigation 路由任意跳轉總結ReactNavigation路由
- 城市選擇頁面的 路由配置 跳轉路由
- Android路由框架AnnoRouter:使用Java介面來定義路由跳轉Android路由框架Java
- Vue 小案例 導航路由跳轉頁面Vue路由
- iOS基於中間層的路由跳轉方案iOS路由
- uni-APP 新增頁面實現路由跳轉APP路由
- vue常用操作及學習筆記(路由跳轉及路由傳參篇)Vue筆記路由
- vue路由切換滑動效果 vue頁面跳轉互動 vue實現動畫跳轉Vue路由動畫
- Flutter 路由跳轉及傳值詳解(Navigator的使用)Flutter路由
- 在Flutter中使用Fluro外掛進行路由跳轉Flutter路由
- 詳解vue 路由跳轉四種方式 (帶引數)Vue路由
- 直播軟體搭建,vue路由跳轉的四種方式Vue路由
- 手把手帶你擼一個路由(1)--介面跳轉路由
- 手把手帶你擼一個路由(1)–介面跳轉路由
- 微信小程式的路由跳轉和傳遞引數微信小程式路由
- Vue.js中,如何自己維護路由跳轉記錄?Vue.js路由
- Flutter Getx 01 - 路由、中介軟體、鑑權、傳值、跳轉Flutter路由
- vue中實現路由跳轉的三種方式(精選)Vue路由
- 微信跳轉支付寶app、跳轉淘寶app新方案(領紅包、領淘寶優惠券示例)APP
- 最簡單的Flutter路由教程——跳轉、動畫與傳參Flutter路由動畫
- 手把手帶你擼一個路由(2)--帶參跳轉路由
- Flutter 基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- Flutter基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- react-router4.2使用js控制路由跳轉的3種方式ReactJS路由
- 轉跳
- LVS - 直接路由(DR)模式示例路由模式
- 【HarmonyOS NEXT】API 11 跳轉系統設定定位服務頁面示例API
- dva
- mp-vue微信小程式多層路由跳轉問題覆盤Vue微信小程式路由
- react-router4 跳轉路由如何隱藏元件而不是解除安裝。React路由元件
- vue+node全棧移動商城【7】路由跳轉-註冊頁面Vue全棧路由
- Nginx - 動態匹配路由中的ID並跳轉到靜態頁面Nginx路由
- JS 跳轉JS
- 錨點 跳轉
- 【ionic】介面跳轉