尝试使用router.history.goBack与react-router时获得警告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用router.history.goBack与react-router时获得警告相关的知识,希望对你有一定的参考价值。

我得到这个警告:

警告:BackButton:上下文router的类型规范无效;类型检查器函数必须返回nullError但返回一个布尔值。您可能忘记将参数传递给类型检查器创建器(arrayOf,instanceOf,objectOf,oneOf,oneOfType和shape都需要参数)。

这是我的代码(我想重用的BackButton组件)

import React, { Component } from "react";
import { Button } from 'antd';

class BackButton extends Component {
  static contextTypes = {
    router: () => true,
  }

  render() {
    return (
      <Button
        onClick={this.context.router.history.goBack}>
        Back
      </Button>
    )
  }
}

export default BackButton;

如果可能的话,我最好使用PropTypes,但我不知道如何......

答案

propTypes的示例:

import React, { Component } from "react";
import { Button } from 'antd';
import PropTypes from 'prop-types'; // You need to add this dependency

class BackButton extends Component {
  static contextTypes = {
    router: PropTypes.object
  }

  render() {
    return (
      <Button
        onClick={this.context.router.history.goBack}>
        Back
      </Button>
    )
  }
}

export default BackButton;

你可以在这里阅读更多关于propTypes的信息:https://reactjs.org/docs/typechecking-with-proptypes.html

另一答案

路由器的contextTypes需要像PropTypes.object.isRequired一样定义,首先使用npm安装prop-types

npm install -S prop-types

并导入它

import PropTypes from 'prop-types'

并将上下文定义为

static contextTypes = {
    router: PropTypes.object.isRequired
}

所以你的代码看起来像

import PropTypes from 'prop-types'
class BackButton extends Component {
    static contextTypes = {
        router: PropTypes.object.isRequired
    }

  render() {
    return (
      <Button
        onClick={this.context.router.history.goBack}>
        Back
      </Button>
    )
  }
}

以上是关于尝试使用router.history.goBack与react-router时获得警告的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试从 pyspark 访问 mysql 表。我正在尝试使用:

尝试使用堆叠小部件构建布局

尝试使用 Curl 登录网站

不安全的 JavaScript 尝试使用框架访问

当我尝试使用 ansible ping 我的 VM 时,它会尝试 ping 服务器 ID 而不是 IP

尝试使用 ConfigurationBuilder 但得到 FileLoadException