Form.js
Я хочу получить из этой формы ссылку типа '/ search / inputValue /' , поэтому из другого компонента я могуизвлечь параметр.Вместо этого я получаю просто '/ search /' без входного значения.
import React from 'react';
import { Link } from 'react-router-dom';
class Form extends React.Component {
state = {
searched: ''
}
onSubmit = (e) => {
const keyword = e.target.elements.keyword.value;
this.setState({ searched: keyword });
}
render(){
return (
<form className="form-inline" onSubmit={this.onSubmit}>
<div className="form-group">
<input type="text" className="form-control" name="keyword" placeholder="Image keyword" />
<Link to={ `/search/${this.state.searched}`}>
<button className="btn btn-primary">Search</button>
</Link>
</div>
</form>
);
}
};
export default Form;
Я заметил, что состояние обновляет свое значение после второй отправкис более старым входным значением , поэтому проблема может заключаться в следующем.
Это можно проверить, удалив тег Link, предотвращение утечек и консоль, чтобы записать входное значение.Первый пустой, а второй с предыдущим входным значением.
Все мое приложение отсортировано, мне просто нужно выяснить, как отправить ссылку со входа.
Router.js
import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import App from '../App';
import SearchPage from './SearchPage';
const Router = () => (
<BrowserRouter>
<Switch>
<Route path="/" component={App} exact />
<Route path="/search/:keyword" component={SearchPage} />
</Switch>
</BrowserRouter>
);
export default Router;