Reactjs 如何在嵌入式React应用程序中的页面之间进行路由?
背景: 我正在尝试在我的嵌入式Shopify应用程序中创建一些链接 我明白我不能使用简单的Reactjs 如何在嵌入式React应用程序中的页面之间进行路由?,reactjs,shopify-app,Reactjs,Shopify App,背景: 我正在尝试在我的嵌入式Shopify应用程序中创建一些链接 我明白我不能使用简单的 我想做什么: 我有3个页面(index.js、dashboard.js和support.js)。我希望允许用户从一个页面导航到另一个页面(使用链接和/或按钮) 我的代码: 通过遵循上面的教程,我已经做到了这一点: // index.js import { Page, Frame } from "@shopify/polaris"; const Index = () => {
我想做什么:
我有3个页面(index.js、dashboard.js和support.js)。我希望允许用户从一个页面导航到另一个页面(使用链接和/或按钮)
我的代码:
通过遵循上面的教程,我已经做到了这一点:
// index.js
import { Page, Frame } from "@shopify/polaris";
const Index = () => {
return (
<Page>
<Frame>
{/* LINK TO DASHBOARD PAGE*/}
{/* LINK TO SUPPORT PAGE */}
</Frame>
</Page>
);
};
export default Index;
//index.js
从“@shopify/polaris”导入{Page,Frame}”;
常数索引=()=>{
返回(
{/*指向仪表板页面的链接*/}
{/*链接到支持页*/}
);
};
出口违约指数;
//routes.js
从“React”导入React;
从“react router”导入{Switch,Route,withRouter};
从“@shopify/app bridge react”导入{ClientRouter,RoutePropagator};
功能路线(道具){
const{history,location}=props;
返回(
);
}
使用路由器导出默认值(路由);
//link.js
从“React”导入React;
从“反应路由器”导入{linkasreactrouterlink};
常量是外部链接正则表达式=/^(?[a-z][a-z\d+.-]*:\/\/)/;
函数链接({children,url=”“,external,ref,…rest}){
if(外部| | IS _外部_链接_正则表达式测试(url)){
rest.target=“_blank”;
rest.rel=“noopener noreferrer”;
返回(
);
}
返回(
{儿童}
);
}
导出默认链接;
附加:
我相信我应该在某个地方实现下面的代码,但我不知道它如何适合使用链接或按钮在页面之间导航
<AppProvider linkComponent={Link}>
{/* App content including your <Route> components */}
</AppProvider>
您的链接
似乎只会替换以前从react路由器
导入的所有链接
组件。谢谢,@DrewReese-这是否意味着我需要将
包含在某个地方?如果是这样的话,我需要在它里面放些什么呢?另外,我试着简单地在index.js中添加一些类似于Go to Dashboard
的内容,但没有成功。有什么想法吗?你有没有从“@shopify/polaris”
导入AppProvider
,并用它将你的代码包装到路由器中?另外,您是否也有路由器
组件?因此我假设我需要编辑index.js文件并1)导入AppProvider,2)包含上面的链接组件
代码,3)创建某种路由器。我有一个ClientRouter.js组件,我从中获得。我走对了吗?
// link.js
import React from "react";
import { Link as ReactRouterLink } from "react-router";
const IS_EXTERNAL_LINK_REGEX = /^(?:[a-z][a-z\d+.-]*:|\/\/)/;
function Link({ children, url = "", external, ref, ...rest }) {
if (external || IS_EXTERNAL_LINK_REGEX.test(url)) {
rest.target = "_blank";
rest.rel = "noopener noreferrer";
return (
<a href={url} {...rest}>
{children}
</a>
);
}
return (
<ReactRouterLink to={url} {...rest}>
{children}
</ReactRouterLink>
);
}
export default Link;
<AppProvider linkComponent={Link}>
{/* App content including your <Route> components */}
</AppProvider>