В React я написал функциональный компонент без сохранения состояния и теперь хочу добавить к нему проверку типа Prop.
List
компонент:
import React from 'react';
import PropTypes from 'prop-types';
function List(props) {
const todos = props.todos.map((todo, index) => (<li key={index}>{todo}</li>));
return (<ul></ul>);
}
List.PropTypes = {
todos: PropTypes.array.isRequired,
};
export default List;
App
компонент, рендеринг List
:
import React from 'react';
import List from './List';
class App extends React.Component {
constructor() {
super();
this.state = {
todos: '',
};
}
render() {
return (<List todos={this.state.todos} />);
}
}
export default App;
Как вы можете видеть в App
, я передаю this.state.todos
List
. Поскольку this.state.todos
является строкой, я ожидал, что сработает проверка типа свойства. Вместо этого я получаю сообщение об ошибке в консоли браузера, потому что строки не имеют метода с именем map
.
Почему проверка типа пропуска не работает должным образом? Взгляните на этот вопрос, случай кажется идентичным.