如何使用fetch api从json中的先前值获取值?

时间:2018-06-08 17:35:03

标签: javascript json react-native fetch-api

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],
   });

我获得了用户名,但没有获得该角色。

2 个答案:

答案 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],
   });