当前位置:首页 > React

react dva如何获取参数

2026-01-24 11:12:06React

在 React Dva 中获取参数的方法

通过路由参数获取

在 Dva 中,路由参数可以通过 props.match.params 获取。假设路由配置中定义了参数 id

// router.js
export function RouterConfig({ history }) {
  return (
    <Router history={history}>
      <Switch>
        <Route path="/detail/:id" component={DetailPage} />
      </Switch>
    </Router>
  );
}

在组件中获取参数:

// DetailPage.js
function DetailPage(props) {
  const { id } = props.match.params;
  console.log(id); // 输出路由中的 id 参数
}

通过查询参数获取

查询参数可以通过 props.location.query 或 URLSearchParams 获取。例如 URL 为 /list?page=1&size=10

// ListPage.js
function ListPage(props) {
  const query = new URLSearchParams(props.location.search);
  const page = query.get('page');
  const size = query.get('size');
  console.log(page, size); // 输出 1 和 10
}

通过 Dva model 的订阅获取

在 Dva 的 model 中,可以通过 subscriptions 监听路由变化并获取参数:

// model.js
export default {
  subscriptions: {
    setup({ dispatch, history }) {
      history.listen((location) => {
        const query = new URLSearchParams(location.search);
        const page = query.get('page');
        dispatch({ type: 'fetchData', payload: { page } });
      });
    },
  },
};

通过 connect 获取全局状态

如果参数存储在全局状态中,可以通过 connect 连接 model 并获取:

// Component.js
import { connect } from 'dva';

function Component({ params }) {
  console.log(params); // 输出全局状态中的 params
}

export default connect(({ global }) => ({
  params: global.params,
}))(Component);

通过 payload 传递参数

在 Dva 的 effectsreducers 中,可以通过 payload 传递参数:

// model.js
export default {
  effects: {
    *fetchData({ payload }, { call, put }) {
      const { id } = payload;
      console.log(id); // 输出 payload 中的 id
    },
  },
};

调用时传递参数:

// Component.js
dispatch({
  type: 'model/fetchData',
  payload: { id: 123 },
});

通过动态路由跳转传递参数

在跳转路由时,可以通过 push 方法传递参数:

// Component.js
props.history.push({
  pathname: '/detail',
  query: { id: 123 },
});

在目标页面通过 props.location.query 获取参数:

// DetailPage.js
function DetailPage(props) {
  const { id } = props.location.query;
  console.log(id); // 输出 123
}

react dva如何获取参数

标签: 参数react
分享给朋友:

相关文章

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Rea…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…