Многостраничное приложение, на странице, т.е, в дочернем компоненте, который вызывается через роутер, странно работает input, который меняет состояние родительского компонента: после ввода первого символа происходит прокрутка к началу дочернего компонента и фокус из input'а пропадает.
Точно такой же input в родительском компоненте работает нормально. В дочернем без роутера тоже работает.
class App extends Component {
constructor() {
super();
this.state = {
input:'',
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.state.input = event.target.value;
this.setState({input: this.state.input});
}
render() {
return(
<div>
<br /><br /><br /><br /><br /><br />
<input type=''
name='input'
value={this.state.input}
onChange={this.handleChange}
placeholder='основной компонент'
/><br />
<Switch>
<Route exact path="/" component={() => (
<PageIndex input={this.state.input} f={this.handleChange} /> )}/>
</Switch>
</div>)
}
}
const PageIndex = (p) => {
return (
<div><hr /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<input type=''
name='input'
value={p.input}
onChange={p.f}
placeholder='дочерний компонент'
/>
</div>
)
}
Проблема именно с вводом текста в инпут. Изменение состояния родителя по клику на кнопку работает без дерганья вверх.
Не могу понять, в чем проблема.