Вам вообще не следует использовать метод JSON.stringify
:
getroles(e) {
fetch('http://xyz', {
method: 'POST',
body: JSON.stringify({
"role_id": this.props.location.state.role_id
})
})
.then((response) => response.json())
.then((responseJson) => {
console.log(`response of getroles: `, responseJson)
if (responseJson.errorCode === '00') {
this.setState({roleList : responseJson.roleList});
let temp = [];
for (var i = 0; i < responseJson.roleList.length; i++) {
temp.push(responseJson.roleList[i].roleDescription);
}
}
else {
alert("Error Fetching roles" + responseJson.errorMsg);
}
})
.catch((error) => {
console.error(error);
});
}
Мне интересно, почему вы получаете список ролей, если запрашиваете одну роль?
Кроме того, если вы решите установить переменную temp
в состояние, было бы лучше установить обе переменные temp
и roleList
одновременно.
Позже правка: Вам не нужно устанавливать никакую временную переменную, чтобы заполнить селектор описанием ролей.
getroles(e) {
fetch('http://xyz', {
method: 'POST',
body: JSON.stringify({
"role_id": this.props.location.state.role_id
})
})
.then((response) => response.json())
.then((responseJson) => {
if (responseJson.errorCode === '00') {
this.setState({roleList : responseJson.roleList});
}
else {
alert("Error Fetching roles" + responseJson.errorMsg);
}
})
.catch((error) => {
console.error(error);
});
}
При рендеринге селектора у вас должно быть что-то вроде:
<select onChange={(event) => alert('Role description for role having id ' + event.value + ' has been selected')}>
<option value="">Please choose a description</option>
{this.state.roleList.map((role) => {
return (
<option key={role.role_id} value={role.role_id}>
{role.roleDescription}
</option>
);
})}
</select>