如何使用组件的 onclick 事件重定向到 gatsby-react 页面?

Lal*_*s M 9 javascript reactjs gatsby

我正在尝试使用onClick组件的事件重定向到页面。因为我有 react gatsby 安装,所以可以使用Linkfromgatsby-link重定向。

import React from  'react';
import { OverflowMenu, OverflowMenuItem } from '../Overflow';
import Link from 'gatsby-theme-carbon/src/components/Link';

class  OverflowComponent extends React.Component {

editPage(index) {
  console.log();
  // window.location.href='/edit';
  return(
    <Link to="/edit"></Link> // I'm trying to redirect to Edit page
  )
}

deletePage() {
  console.log("Delete clicked");
}

  render(){ 
    return (
      <div>
        <OverflowMenu flipped={true}>
            <OverflowMenuItem  itemText="Edit" primaryFocus onClick={() => this.editPage()} />
            <OverflowMenuItem  itemText="Delete" onClick={() => this.deletePaget()} />
        </OverflowMenu>
      </div>
    );
  }
}

export default OverflowComponent;
Run Code Online (Sandbox Code Playgroud)

从上面的代码来看,该Overflow组件是一个贡献组件,它可以有一个 onClick 函数。我正在尝试使用 gatsby-link 进行重定向。

Lal*_*s M 17

我们可以使用navigatefrom ,而不是使用问题中提到的 Link 或 window.location gatsby。如下所示

import React from  'react';
import { OverflowMenu, OverflowMenuItem } from '../Overflow';
import {navigate} from 'gatsby'; //import navigate from gatsby

class  OverflowComponent extends React.Component {

editPage(index) {
  navigate('/edit'); //navigate to edit page
}

deletePage() {
  console.log("Delete clicked");
}

  render(){ 
    return (
      <div>
        <OverflowMenu flipped={true}>
            <OverflowMenuItem  itemText="Edit" primaryFocus onClick={() => this.editPage()} />
            <OverflowMenuItem  itemText="Delete" onClick={() => this.deletePaget()} />
        </OverflowMenu>
      </div>
    );
  }
}

export default OverflowComponent;
Run Code Online (Sandbox Code Playgroud)