我需要从onSubmit电话内部进行重定向.目前,完整的代码如下所示,我需要保留CampaignNew作为基于类的组件.我该怎么做呢?

import React, { Component } from "react";
import Layout from "../../components/layoyt";
import { Form, Button, Input, Message } from "semantic-ui-react";
import factory from "../../components/factory";
import web3 from "../../components/web3";

class CampaignNew extends Component {
  state = {
    minimumContribution: "0",
    errorMessage: "",
    loading: false,
  };

  onSubmit = async (event) => {
    event.preventDefault(); // Prevent the browser to attemp submission at initialization

    this.setState({ loading: true, errorMessage: "" });

    try {
      await window.ethereum.enable();
      const accounts = await web3.eth.getAccounts();
      console.log("Account :" + accounts[0]);

      await factory.methods.createCampaign(this.state.minimumContribution).send({
        from: accounts[0],
      });

      //// !!PUSH_TO_('/')

      this.setState({ loading: false });
    } catch (err) {
      this.setState({ errorMessage: err.message });
      this.setState({ loading: false });
    }
  };

  render() {
    return (
      <Layout>
        <h3>Create a Campaign</h3>
        <Form onSubmit={this.onSubmit} error={!!this.state.errorMessage}>
          <Form.Field>
            <label>Minimum Contribution</label>
            <Input
              label="wei"
              labelPosition="right"
              value={this.state.minimumContribution}
              onChange={(event) => this.setState({ minimumContribution: event.target.value })}
            />
          </Form.Field>

          <Message
            error
            header="There was some errors with your submission"
            content={this.state.errorMessage}
          />
          <Button loading={this.state.loading} primary>
            Create
          </Button>
        </Form>
      </Layout>
    );
  }
}

export default CampaignNew;

推荐答案

可以使用withRouterrouter对象作为props 传递给CampaignNew.为此,首先从Next.js导入withRouter:

import { withRouter } from "next/router";

然后将导出CampaignNew的方式更改为:

export default withRouter(CampaignNew);

现在,您可以访问props中的router

onSubmit = async (event) => {
  event.preventDefault();
  this.props.router.push("/about");
};

Javascript相关问答推荐

如何在ReactJS中修复这种不需要的按钮行为?

使用NgDeliverentOutlet和动态内容投影的Angular 渲染组件

react 路由加载程序行为

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

如何在使用fast-xml-parser构建ML时包括属性值?

如何才能拥有在jQuery终端中执行命令的链接?

传递一个大对象以在Express布局中呈现

在JavaScript中声明自定义内置元素不起作用

为什么我的列表直到下一次提交才更新值/onChange

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

Eval vs函数()返回语义

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

覆盖加载器页面避免对页面上的元素进行操作

如何使用JS创建一个明暗功能按钮?

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

自定义图表工具提示以仅显示Y值

将范围 Select 器添加到HighChart面积图

如何根据查询结果重新排列日期

使用API调用的VUE 3键盘输入同步问题

未找到用于 Select 器的元素:in( puppeteer 师错误)