UNPKG

@aniyajs/plugin-router

Version:

基于 react-routerV6 封装的路由插件服务于aniyajs自动化脚手架

84 lines (72 loc) 2.1 kB
import { useNavigate } from "react-router-dom"; function useHistory() { const navigate = useNavigate(); /** * 使用给定的路径替换当前的浏览历史记录。 * @param pathname 要导航到的新路径,作为字符串提供。 * @param props {object} 导航的其他属性。 * @returns 调用navigate函数的返回值,该函数负责执行实际的导航操作。 */ function replace(pathname, props) { const params = new URLSearchParams(); if (props && props.data && Object.keys(props.data).length) { for (const key in props.data) { const ele = props.data[key]; params.append(key, ele); } } // 构造完整路径 const search = params.toString() ? `?${params.toString()}` : ''; navigate({ pathname, search, replace: true, state: (props && props.state) || {}, }); } /** * 将用户导航到指定的路径。 * @param pathname {string} 需要导航到的路径。 * @param props {object} 导航的其他属性。 * @returns 调用navigate函数的返回值,具体返回值类型依赖于navigate函数的实现。 */ function push(pathname, props) { const params = new URLSearchParams(); if (props && props.data && Object.keys(props.data).length) { for (const key in props.data) { const ele = props.data[key]; params.append(key, ele); } } const search = params.toString() ? `?${params.toString()}` : ''; return navigate({ pathname, search, replace: false, state: (props && props.state) || {}, }); } /** * 返回上一页 * 该函数没有参数。 * @returns {Promise<void>} 一个导航到前一页的Promise。 */ function goBack() { return navigate(-1); } /** * go函数 - 根据提供的数字进行导航 * @param num {number} 导航的目标位置编号 * @returns 返回导航操作的结果 */ function go(num) { return navigate(num); } return { replace, push, goBack, go, }; } export default useHistory;