如何在 react native 的函数外使用变量?

问题描述 投票:0回答:1

我需要在这个函数之外使用变量 "let result"。我需要在另一个函数中使用这个变量。我的代码是这样的:我需要在这个函数之外使用变量 "let result"。

method: "GET",
headers: {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Authorization': 'Bearer ' + this.state.clientToken,
},
              })
              .then((response) => response.json())
              .then((responseJson) => {
                let result= JSON.parse((responseJson.lstsurveyoncode))
                let answer = JSON.parse(responseJson.lstsurveyoncode)[0].qoptions
                console.log("responsejson",result[1].QUESTIONCODE)
                console.log("answerrr",answer);
                console.log("data length",result.length);
                   this.setState({
                     isLoading:false,
                     dataresponse:result,
                    //  count:Object.keys(dataresponse).length
                    },function(){
                  });
react-native variables
1个回答
0
投票

你可以创建一个全局变量,然后在你的第一个函数中更新它,在第二个函数中你检查这个变量是否被定义了

let result;

function firstFunction(){
  result = 'Your Json Result'
}
function secondFunction(){
  if (!result) return;

  // Here you can use your variable result
}



0
投票

你应该阅读一下react-native中的async-await和状态管理.为了快速解决问题,你应该在你的函数中使用 async 修饰语和 await 为结果。示例代码如下。

async function yourRequest() {
  return new Promise((resolver, rejected) => {
    // your async request
  })
    .then(response => response.json())
    .then(responseJson => {
      const result = JSON.parse(responseJson.lstsurveyoncode)
      const answer = JSON.parse(responseJson.lstsurveyoncode)[0].qoptions
      // ...
      return {
        result: result,
        answer: answer,
      }
    })
}


async function handleResponse() {
  const response = await yourRequest()
  // and now, you can access to variables declared at `makeRequest` function  
  console.log(response.result)
  console.log(response.answer)
}
© www.soinside.com 2019 - 2024. All rights reserved.