Я только что завершил создание своего пользовательского интерфейса поиска с помощью ReactiveSearch, и мне просто нужно выяснить, как отображать результаты в '/ results' с помощью React Router 4 и строки запроса пакета npm.
Я сделал коды и поле здесь
Мой вопрос: почему userQuery
не определено? Я думал, что следовал это правильно?
В основном мой search-layout.js выглядит так:
import React, { Component } from 'react';
import { Route } from 'react-router-dom';
import querystring from 'query-string';
import Results from '../components/search/Results';
class SearchLayout extends Component {
constructor(props) {
super(props);
this.state = {
value: ''
};
}
componentDidMount(value) {
this.setState({ value: this.state.value });
console.log('This is the value: ', value);
const userQuery = querystring.parse(this.props.location.search);
// this.setState({ userQuery: this.state.userQuery });
console.log('This is from query-string: ', userQuery);
}
render() {
const { value } = this.state;
console.log('This is value: ', value);
const { userQuery } = this.state; // query string
console.log('This is the userQuery: ', userQuery);
const { match } = this.props; // path
console.log('This is match props: ', match);
return (
<div>
<Route path={`${match.path}?q=${userQuery}`} component={Results} />
{this.state.value}
{match.path}
<br />
{match.url}
<br />
{/* <Results /> */}
</div>
);
}
}
export default SearchLayout;
Компонент Results, который <Route />
рендерит, содержит компонент ReactiveList. Я знаю, что <Results />
работает и отображает информацию, потому что у меня изначально был React-рендеринг, просто чтобы убедиться, что она работает Сейчас я пытаюсь интегрировать RR4 и пакет строки запроса и не знаю, где я ошибаюсь.
Если я заменим path = {${match.path}?q="${userQuery}"
} на path = "/ results" - отображение результатов, но не на основе запроса пользователя, это просто поведение ReactiveList по умолчанию.