this.context.PropTypes未定义

问题描述 投票:0回答:2

我正在上大学的课程。在听完讲座之后,我遇到了这个问题,我似乎无法弄清楚。

这是我的代码:

import React from 'react';
import { getFunName } from '../helpers';

class StorePicker extends React.Component {

    goToStore(event) {
        event.preventDefault();
        console.log("provoked");
    const storeId = this.storeInput.value;
    console.log(`going to /store/${storeId}`)
        this.context.PropTypes.transitionTo(`/store/${storeId}`);
    }

    render() {
        return (
            <form className="store-selector" onSubmit={(e) => this.goToStore(e)}>
                <h2> Please Enter A Store </h2>
                <input type="text" required placeholder="Store Name" 
                defaultValue={getFunName()} ref={ (input) => {this.storeInput = input}} /> 
                <button type="submit"> Visit Store </button>            
            </form>
        )

    }   
}

StorePicker.contextTypes = {
router: React.PropTypes.object 
}

export default StorePicker;
reactjs react-router react-proptypes
2个回答
0
投票

首先导入道具类型

import PropTypes from 'prop-types';

然后使用历史记录重定向

this.props.history.push(`store/${storeId}`);

和您的路由器

router: PropTypes.object

0
投票
React.PropTypes has been deprecated. So you have to install [prop-types][1]

图书馆。并像这样修改您的代码:

import React from 'react';
import { getFunName } from '../helpers';
import PropTypes from 'prop-types';

class StorePicker extends React.Component {

    goToStore(event) {
        event.preventDefault();
        console.log("provoked");
    const storeId = this.storeInput.value;
    console.log(`going to /store/${storeId}`)
        this.props.history.push(`store/${storeId}`);
    }

    render() {
        return (
            <form className="store-selector" onSubmit={(e) => this.goToStore(e)}>
                <h2> Please Enter A Store </h2>
                <input type="text" required placeholder="Store Name" 
                defaultValue={getFunName()} ref={ (input) => {this.storeInput = input}} /> 
                <button type="submit"> Visit Store </button>            
            </form>
        )

    }   
}

StorePicker.contextTypes = {
router: PropTypes.object 
}

export default StorePicker;

希望有帮助。如有疑问,请随时

© www.soinside.com 2019 - 2024. All rights reserved.