ReactNative Asyn c функция return [объект Object] - PullRequest
1 голос
/ 14 июля 2020

Привет, я новичок в реагировании на родной язык ... Я пытаюсь получить значение из AsyncStorage, используя функцию ниже. И попробуйте восстановить его по тревоге. Но я продолжаю получать значение [объект Object]. В журнале консоли он может отображать значение, но после возврата становится объектом. могу я узнать почему?

Ниже моя функция ..

    _DeviceDetails = async (device) =>{
        try {
            let nonObj = 'hai'
            const obj = await AsyncStorage.getItem(device)
            let obj1 = JSON.parse(obj)
            
            var devid = obj1.deviceId
            var devnam = obj1.deviceName
            var devdesc = obj1.deviceDesc
            //console.log(obj + 'ads')
            //return obj1.deviceName.toString;
            console.log('-1-' + devid)
            console.log('-2-' + devnam)
            console.log('-3-' + devdesc)

            return devnam
            
          } catch (e) {
            console.log('Failed to fetch the data from storage' + e);
          }

        
          
    }

ниже мое предупреждение ...

<TouchableHighlight 
                            style={{ backgroundColor: 'blue', justifyContent: 'center' , alignContent:'center'}}
                            activeOpacity={0.9} 
                            underlayColor="pink" onPress={() => 
                            alert(item + ' - ' + (this._DeviceDetails(item)))}>
                                <Text style={{
                                    fontSize: 15,
                                    textAlign: 'center',
                                    marginBottom: 16,
                                    color: 'white'
                                  }}>{item}</Text>
                                 
                            </TouchableHighlight>

1 Ответ

0 голосов
/ 14 июля 2020

Поскольку ваша функция _DeviceDetails является асинхронной функцией c. Вы должны показать бдительность после вашего ответа. Вношу некоторые изменения в ваш код. вы можете посмотреть ниже и попробовать.

 _DeviceDetails = async (device) =>{
    try {
        let nonObj = 'hai'
        const obj = await AsyncStorage.getItem(device)
        let obj1 = JSON.parse(obj)
        
        var devid = obj1.deviceId
        var devnam = obj1.deviceName
        var devdesc = obj1.deviceDesc
        //console.log(obj + 'ads')
        //return obj1.deviceName.toString;
        console.log('-1-' + devid)
        console.log('-2-' + devnam)
        console.log('-3-' + devdesc)
        alert(device - devnam);
        return devnam
        
      } catch (e) {
        console.log('Failed to fetch the data from storage' + e);
      }

Пожалуйста, попробуйте этот способ.

}

<TouchableHighlight 
                            style={{ backgroundColor: 'blue', justifyContent: 'center' , alignContent:'center'}}
                            activeOpacity={0.9} 
                            underlayColor="pink" onPress={() => this. _DeviceDetails(item)}>
                                <Text style={{
                                    fontSize: 15,
                                    textAlign: 'center',
                                    marginBottom: 16,
                                    color: 'white'
                                  }}>{item}</Text>
                                 
                            </TouchableHighlight>
...