第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么當(dāng)我單擊按鈕后,在獲取Prmise和this.setState之后才打印控制臺(tái)日志

為什么當(dāng)我單擊按鈕后,在獲取Prmise和this.setState之后才打印控制臺(tái)日志

白板的微信 2021-03-31 11:11:22
我有一個(gè)touchableOpacity區(qū)域,里面有圖像。我想在用戶單擊圖像時(shí)進(jìn)行設(shè)置,將touchableOpacity的不透明度設(shè)置為0.2,然后執(zhí)行獲取,其結(jié)果將為0或1。如果為0,則將圖像更改為黑白圖像,否則為彩色圖像。但是我無法做到這一點(diǎn)。找不到我單擊touchableOpacity區(qū)域時(shí),console.log在控制臺(tái)中打印其值但未設(shè)置state.opacity的原因。import React, { Component } from 'react';import {Image, TouchableOpacity, View, Text, StyleSheet, StatusBar } from 'react-native';import styles from './Estilos';export default class LightsContainer extends Component {constructor() {super();  this.state = { opacity: 0.9 };}onPress = () => {    fetch("http://192.168.0.161/switch.php?port=1")        .then(response => response.text())         .then((dataStr) => {        console.log(dataStr);             if (dataStr == 1){            this.setState({opacity: 0.9});            console.log("si");        } else {            this.setState({opacity: 0.2});            console.log("no");        }    });         console.log(this.state);});}}
查看完整描述

1 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

由于JavaScript是一種同步語言,因此控制臺(tái)日志幾乎都會(huì)立即發(fā)生。

在返回提取之前(數(shù)據(jù)仍在傳入時(shí)),該操作console.log(this.state)已經(jīng)發(fā)生,因此的最后一行onPress將記錄初始狀態(tài)。同樣要記住,React的setState方法本身是異步的!,所以日志sino后可能不會(huì)發(fā)生setState已完成。

為了解決這個(gè)問題,您可能需要研究async / await語法,該語法將通過等待Promises解決來讓您的異步代碼“同步”運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2021-04-08
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)