当前位置:首页 > 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 监听路由变化并获取参数:

react dva如何获取参数

// 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 传递参数:

react dva如何获取参数

// 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
分享给朋友:

相关文章

如何学react

如何学react

学习 React 的基础知识 React 是一个用于构建用户界面的 JavaScript 库。学习 React 的第一步是掌握其核心概念,包括组件、状态(State)、属性(Props)和生命周期方法…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

react如何取消渲染

react如何取消渲染

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

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app np…