जब मैं "तत्व दिखाएं" बटन पर क्लिक करता हूं, तो मैं राज्य को सत्य में बदलना चाहता हूं और जब मैं "एलिमेंट छुपाएं" बटन पर क्लिक करता हूं, तो मैं राज्य को गलत में बदलना चाहता हूं

लेकिन जब मैं पहली बार "तत्व दिखाएं" बटन पर क्लिक करता हूं तो यह सत्य में नहीं बदलता है और आवश्यकता होती है कि मैं दूसरी बार स्थिति को बदलने के लिए बटन पर क्लिक करता हूं। और यह वही है जब मैं "एलिमेंट छुपाएं" बटन पर क्लिक करता हूं

यहाँ मेरा कोड है:

import * as React from 'react';
import { View, Text, StyleSheet, Platform, AsyncStorage, TouchableHighlight, ScrollView, SafeAreaView, Button  } from 'react-native'

class Base extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isForShowVar: true
    }
  }

  render() {
    return(
      <View>
        <Button
            style={{marginTop:50, width:150}}
            title="Hide Element"
            onPress={()=>{ alert(this.state.isForShowVar); this.setState({isForShowVar: false});  }}
          />  
          <Button
            style={{marginTop:50, width:150}}
            title="Show Element"
            onPress={()=>{ alert(this.state.isForShowVar); this.setState({isForShowVar: true});  }}
          />  
      </View>
    )
  }
}

export default Base;

आप यहां

जब मैं पहली बार बटन पर क्लिक करता हूं तो राज्य कैसे बदल सकता है?

धन्यवाद

0
mojtaba sh 8 अगस्त 2020, 18:56

1 उत्तर

सबसे बढ़िया उत्तर

सियाओ, ऐसा इसलिए होता है क्योंकि आप सेट से पहले isForShowVar पढ़ते हैं। वैसे भी अगर आप this.setState के बाद अलर्ट करते हैं तो आपको पुराना मान मिल गया है क्योंकि this.setState async है। लेकिन आप this.setState कॉलबैक का उपयोग इस तरह कर सकते हैं:

this.setState({isForShowVar: true}, () => {
   alert(this.state.isForShowVar); 
});

यहां आपके कोड में बदलाव किया गया है।

0
Giovanni Esposito 8 अगस्त 2020, 19:03