On react native我从key获得了值,但是无法从之前的值获得值
例如我跟随json
{
"username":"xyz",
"xyz":{"role":3,"role_name":"abcd"}
}
我需要获取用户名并使用用户名值来访问角色。我试过以下。
constructor(){
this.state={rol:'role',uname:'',xtext:'',}
}
fetch('example.com/url')
.then(response => response.json())
.then(responseobj => {
this.setState({
uname: responseobj.username,
xtest: responseobj[this.state.uname][this.state.rol],
});
我获得了用户名,但没有获得该角色。
答案 0 :(得分:1)
setState是异步的,所以状态还没有准备好,你可以使用它:
then(responseobj => {
this.setState({
uname: responseobj.username,
xtest: responseobj[responseobj.username][this.state.rol],
});
或者如果你真的想使用状态,你可以使用回调:
then(responseobj => {
this.setState({
uname: responseobj.username,
}, () => {
this.setState({
xtest: responseobj[this.state.uname][this.state.rol],
})
});
答案 1 :(得分:1)
这不起作用,因为当你尝试在setState函数中使用它时,this.state.uname是一个空字符串。 setState
同时设置两个值。试试这个:
this.setState({
uname: responseobj.username,
xtest: responseobj[responseobj.username][this.state.rol],
});