当前位置:首页 > 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 获取参数:

react dva如何获取参数

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

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

相关文章

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

如何改造react

如何改造react

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

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…