Javascript 使用react路由器dom重定向react中的onclick事件

Javascript 使用react路由器dom重定向react中的onclick事件,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我想使用路由器react dom转到react项目中的其他页面。我创建了如下函数: const {id} = props; const redirect = () => { console.log("redirecting..."); const url = `/${id}`; return <Redirect to={url} />; }; <BtnDetalii clickFn={redirect}

我想使用
路由器react dom
转到react项目中的其他页面。我创建了如下函数:

const {id} = props;
  const redirect = () => {
    console.log("redirecting...");
    const url = `/${id}`;
    return <Redirect to={url} />;
  };
      <BtnDetalii
        clickFn={redirect}
        text="apasa aici pentru mai multe detalii"
      />
const{id}=props;
常量重定向=()=>{
日志(“重定向…”);
常量url=`/${id}`;
返回;
};
然后我为其他组件制作道具,如下所示:

const {id} = props;
  const redirect = () => {
    console.log("redirecting...");
    const url = `/${id}`;
    return <Redirect to={url} />;
  };
      <BtnDetalii
        clickFn={redirect}
        text="apasa aici pentru mai multe detalii"
      />

这是我的btndetali组件

const BtnDetalii = props => (
  <div onClick={() => props.clickFn()} className="detalii">
    {props.text}
  </div>
);
const BtnDetalii=props=>(
props.clickFn()}className=“detalii”>
{props.text}
);

当我点击按钮时,按钮不起作用。我遗漏了什么?

检查此示例中的功能组件,您可以浏览文档以更好地理解

从“react router dom”导入{useHistory};
函数HomeButton(){
让历史=使用历史();
函数handleClick(){
历史推送(“/主页”);
}
返回(
回家吧
);
}

检查此示例中的功能组件,您可以浏览文档以更好地理解

从“react router dom”导入{useHistory};
函数HomeButton(){
让历史=使用历史();
函数handleClick(){
历史推送(“/主页”);
}
返回(
回家吧
);
}

您可以使用React路由器v4。使用
react router dom
中的
withRouter
包装您的组件,这样您就可以访问
history
prop。之后,您可以将
新url推送到
历史记录
道具

我不确定您的
重定向
函数所在的父组件中的代码是什么,但这是使用
with router
的一个简单示例。如果您共享更多组件,我可以更改代码段并添加代码

import React from "react";
import { withRouter } from "react-router-dom";
import BtnDetalii from "./BtnDetalii";

const Card = withRouter(({ history, ...props }) => {
    const redirect = () => {
        console.log("redirecting...");
        const id = props.id;
        const url = `detalii/${id}`;
        history.push(url);
    };
    return (
        <div className="today">
        <div className="data">{props.nume}</div>
        <img src={props.poza} className="img-icon" alt="poza" />
        <p className="text">{props.strada}</p>
        <BtnDetalii
            clickFn={redirect}
            text="apasa aici pentru mai multe detalii"
        />
        </div>
    );
});

export default Card;
从“React”导入React;
从“react router dom”导入{withRouter};
从“/BtnDetalii”导入BtnDetalii;
const Card=withRouter({history,…props})=>{
常量重定向=()=>{
日志(“重定向…”);
const id=props.id;
常量url=`detalii/${id}`;
推送(url);
};
返回(
{props.nume}

{props.strada}

); }); 导出默认卡;
您可以使用React路由器v4。使用
react router dom
中的
withRouter
包装您的组件,这样您就可以访问
history
prop。之后,您可以将
新url推送到
历史记录
道具

我不确定您的
重定向
函数所在的父组件中的代码是什么,但这是使用
with router
的一个简单示例。如果您共享更多组件,我可以更改代码段并添加代码

import React from "react";
import { withRouter } from "react-router-dom";
import BtnDetalii from "./BtnDetalii";

const Card = withRouter(({ history, ...props }) => {
    const redirect = () => {
        console.log("redirecting...");
        const id = props.id;
        const url = `detalii/${id}`;
        history.push(url);
    };
    return (
        <div className="today">
        <div className="data">{props.nume}</div>
        <img src={props.poza} className="img-icon" alt="poza" />
        <p className="text">{props.strada}</p>
        <BtnDetalii
            clickFn={redirect}
            text="apasa aici pentru mai multe detalii"
        />
        </div>
    );
});

export default Card;
从“React”导入React;
从“react router dom”导入{withRouter};
从“/BtnDetalii”导入BtnDetalii;
const Card=withRouter({history,…props})=>{
常量重定向=()=>{
日志(“重定向…”);
const id=props.id;
常量url=`detalii/${id}`;
推送(url);
};
返回(
{props.nume}

{props.strada}

); }); 导出默认卡;

您使用的是哪个版本的react路由器?@Cosmin Ciolacu您可以在沙箱中共享您的完整代码吗?或者我发布了解决方案检查,希望它能帮助您使用哪个版本的react路由器?@Cosmin Ciolacu您能在沙箱中共享您的完整代码吗?或者我发布了解决方案检查,希望它能帮助我显示
TypeError:无法读取未定义的属性“push”
是否添加了历史记录:MemoryHistory;为了你的道具?@cosminciolaco你使用的是基于类的组件还是基于函数的组件?我使用的是基于函数的组件component@CosminCiolacu那就不行了。你为什么不把你的按钮包在链接里呢。这是重定向的另一种方式,它显示
TypeError:cannotreadproperty'push'of undefined
是否添加了历史记录:MemoryHistory;为了你的道具?@cosminciolaco你使用的是基于类的组件还是基于函数的组件?我使用的是基于函数的组件component@CosminCiolacu那就不行了。你为什么不把你的按钮包在链接里呢。这是重定向的另一种方式ok,但我使用的是功能组件而不是基于类的组件我会将其更改为基于函数的组件,您可以添加组件代码吗?ok,但我使用的是功能组件而不是基于类的组件我会将其更改为基于函数的组件,您可以添加组件代码吗?