Вы должны использовать state
для обработки filters values
.поэтому вы должны добавить метод с именем componentDidMount
, в этом компоненте вы можете инициализировать значения ваших элементов.Я думаю, что ваша проблема в том, что вы получаете значения после того, как компонент готов.
Прежде всего вам нужно добавить в исходное состояние два свойства:
state = {
labels: [],
results: [],
contracts: [],
search: "",
filters: [],
isReady: false,
};
Затем у вас естьчтобы инициализировать эти значения, поэтому, когда вы делаете свой вызов ajax, вы уверены, что у вас есть значения в состоянии.
Затем вы делаете вызовы в componentDidMount.
initializeFilters = () => {
const filter1 = document.getElementById("IDXT001").val();
const filter2 = document.getElementById("IDXT002").val();
const filter3 = document.getElementById("IDXT003").val();
this.setState({
filters: [filter1, filter2, filter3],
isReady: true
});
}
componentDidMount(){
initializeFilters();
}
Так что в вашемajax у вас может быть что-то вроде этого:
var queryURL = "http://api/ixmasterdocument?filter=idxt001|" + this.state.filter[0] + "&filter=idxt002|" + this.state.filter[1] + "&filter=idxt003|" + this.state.filters[2];
$.ajax({
url: queryURL,
method: "GET"
}).then(data => {
document.getElementById("test").innerHTML = data.map(function(contracts) {
return contracts.Fields.map(function(docs) {
return "<p>" + docs.DisplayName + ": " + docs.DataValue + "</p>";
}).join("<br/>");