Вы проверяете данные за пределами тогдашнего объема. Там его нет, поэтому вам придется вызвать setState с полученными данными внутри .then ().
изменить .then(json =>log(json.userid))
на
.then(json => {
that.setState({userid: json.userid})
})
затем, после компонентаобновлено, состояние с идентификатором пользователя доступно
Обновление: альтернативно, вы можете использовать async await и построить его так:
import React from 'react';
class MyComponent extends React.Component {
state = {
userId: null
}
useFetch = async e => {
const raw = await fetch("/login", {
method: "POST",
headers: {
'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
'Content-Type': 'application/json'
},
body: JSON.stringify(this.data)
});
const json = await raw.json();
this.setState({
userId:json
}, () => console.log(this.state))
}
render() {
if (this.state.userId === null)
this.useFetch();
return (
<div>Loading some data</div>
)
}
}
export default MyComponent;
проверенный и рабочий компонент.