Чтобы решить эту проблему без явного ввода класса, просто переместите state
из constructor
, как показано ниже:
class MyComponent extends React.Component<any> {
state = {
key1: value1,
key2: value2
}
render(){
return(
<div>Hello World</div>
)
}
}
Этот подход полезен, когда у вас есть функция, которая устанавливаетсостояние ввода формы выглядит следующим образом:
handleInputChange = (event)=>{
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value
});
}
Так что приведенный ниже код будет очень хорош, особенно если вы используете машинопись:
class MyComponent extends React.Component<any> {
state = {
key1: value1,
key2: value2
}
handleInputChange = (event: React.ChangeEvent<HTMLInputElement>)=>{
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value // no typing error
});
}
render(){
return(
<div>Hello World</div>
)
}
}