我认为我正在对此组件进行propType检查,这是传递道具的代码:
<TodoTextInput
autoFocus={true}
className="new-todo"
onSave={this._handleTextInputSave}
placeholder="What needs to be done?"
/>
和我唯一检查proptypes的组件:
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
export default class TodoTextInput extends React.Component {
state = {
text: '',
};
_addTodo = () => { // To add remove and edit functionality
const trimText = this.state.text.trim();
if (trimText !== '') {
this.props.onSave(trimText);
this.setState({text: ''});
}
};
_handleChange = (e) => {
this.setState({text: e.target.value});
};
render() {
return (
<form onSubmit={this._addTodo}> {
<input type="text"
onChange={this._handleChange}
value={this.state.text}
placeholder={this.props.placeholder}
/>
</form>
);
}
}
TodoTextInput.propTypes = {
onSave: PropTypes.func.isRequired,
placeholder: PropTypes.string,
};
很明显onSave是func而占位符是一个字符串,但为什么我仍然有这个错误?我删除了PropTypes检查但仍然拥有它。为什么呢?
警告:不建议通过主React包访问PropTypes。 请改用npm中的prop-types包。