क्यों setState राज्य में मेरी सरणी जोड़कर सेट नहीं?

वोट
1

मैं एक पाठ क्षेत्र जो तब एकाधिक लिंक ले लिया मैं बनाने के लिए split()सरणी हाँ इसका काम कर ठीक में, लेकिन मैं अपने में कि सरणी सेट करना चाहते हैं stateमें linkList: []लेकिन जब मैं प्रस्तुत करने के लिए बटन पर क्लिक करें यह मुझे खाली सरणी मैं प्रारंभ के रूप में देता है। लेकिन तब यह मुझे मेरे वांछित सूची प्रदान करती है जब मैं फिर से बटन प्रस्तुत करने के लिए प्रेस, क्यों? यहाँ कोड और आउटपुट हैं

onSubmit = event => {
    this.setState({ loading: true, host: undefined });
    const { text, linkList } = this.state;

    console.log(text);
    const mList = text.split(\n).filter(String);
    console.log(mList);
    this.setState({
      linkList: [...mList]
    });
    console.log(linkList);

    event.preventDefault();
  };

आउटपुट कंसोल (प्रथम क्लिक)

youtube.com
google.com
facebook.com
------------------------------------------------------------
[youtube.com, google.com, facebook.com]
------------------------------------------------------------
[]

आउटपुट कंसोल (दूसरा क्लिक करें)

youtube.com
google.com
facebook.com
--------------------------------------------- 
[youtube.com, google.com, facebook.com]
---------------------------------------------
[youtube.com, google.com, facebook.com]
13/01/2020 को 23:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
0

नीचे दिए गए कोड आ सकता है।

onSubmit = event => {
    this.setState({ loading: true, host: undefined }, () => {
      const { text, linkList } = this.state;

      console.log(link);
      const mList = text.split("\n").filter(String);
      console.log(mList);
      this.setState({
        linkList: [...mList]
      }, () => {
        console.log(linkList);
        event.preventDefault();
      });
    });
  };
13/01/2020 को 23:54
का स्रोत उपयोगकर्ता

वोट
1

setStateअतुल्यकालिक है। इसका मतलब है कि यह सही दूर नहीं होता है, लेकिन एक बहुत ही कम समय बाद में बजाय। यदि आप एक जोड़ देते हैं तो:

console.log(linkList)

अपने विधि प्रस्तुत करना के शीर्ष करने के लिए, आप आइटम संलग्न किया जा रहा कि आप उम्मीद कर बस के रूप में देखेंगे।

13/01/2020 को 23:54
का स्रोत उपयोगकर्ता

वोट
1

यह शायद संलग्न किया जा रहा है, यह सिर्फ उपलब्ध नहीं जब तक अगले प्रस्तुत करना है।

से प्रलेखन :

setState()हमेशा तुरंत घटक अपडेट नहीं होता। यह बैच कर सकते हैं या बाद में जब तक अद्यतन स्थगित। यह पढ़ने में आता है this.stateबुला के बाद सही setState()एक संभावित ख़तरा । इसके बजाय, उपयोग componentDidUpdateया एक setStateकॉलबैक ( setState(updater, callback)), या तो जिनमें से आग की गारंटी है के बाद अद्यतन लागू किया गया है।

14/01/2020 को 00:07
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more