当前位置:首页 > 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
分享给朋友:

相关文章

vue实现绑定输入参数

vue实现绑定输入参数

Vue 实现绑定输入参数 在 Vue 中,可以通过 v-model 指令实现输入框与数据的双向绑定。以下是一个简单的示例: <template> <div> &l…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何刷新

react如何刷新

刷新React组件的方法 使用状态更新触发重新渲染 通过更新组件的状态可以触发重新渲染。React会在状态变化时自动重新渲染组件。 const [count, setCount] = useStat…