Таким способом нельзя экспортировать свойство класса.
Я думаю, что самый простой и чистый способ сделать то, что вы задумали, - это создать свой context
за пределами вашего класса следующим образом:
import React, { Component } from "react";
import axios from "axios";
const SearchContext = React.createContext();
class Search extends Component {
state = {
searchResults: [],
isSearched: false
}
data = { searchResults: this.state.searchResults }
getSearchQuery = (event) => {
const queryString = document.querySelector(
".search-input"
).value;
if (event.keyCode === 13) {
axios.post("http://localhost:3001/search", {
queryString: queryString,
}).then(response => {
this.setState({ ...this.state, searchResults: response.data });
});
this.setState({ ...this.state, isSearched: true });
window.location.href = '/blog/searchResults'
}
};
render() {
return (
<SearchContext.Provider value={searchResults}>
<input
type="text"
className="search-input"
onKeyDown={(e) => this.getSearchQuery(e)}
/>
</SearchContext.Provider>
);
}
}
export SearchContext.Consumer as SearchContextConsumer
export default Search;
и вот как вы можете выполнять вышеуказанные функции в Function Component
, который более читабелен и содержит меньше кода:
import React, { Component } from "react";
import axios from "axios";
const SearchContext = React.createContext();
const Search = () => {
const [state, setState] = useState({
searchResults: [],
isSearched: false
});
const getSearchQuery = event => {
const queryString = document.querySelector(".search-input").value;
if (event.keyCode === 13) {
axios
.post("http://localhost:3001/search", {
queryString: queryString
})
.then(response => {
setState({ ...state, searchResults: response.data });
});
setState({ ...state, isSearched: true });
window.location.href = "/blog/searchResults";
}
};
return (
<SearchContext.Provider value={state.searchResults}>
<input
type="text"
className="search-input"
onKeyDown={e => getSearchQuery(e)}
/>
</SearchContext.Provider>
);
};
export default Search;
теперь, если вам нужно использовать данные контекста, просто сделайте это внутри provider zone
:
const searchResults = React.useContext(SearchContext);