अभी भी useEffect से जूझ रहा है।
मैंने कुछ चीजें पढ़ीं और सोचा कि मुझे अंत में निर्भरता सरणी पर समझ मिल गई है, लेकिन स्पष्ट रूप से नहीं।

कहो, मेरे पास यह है:

const StructRequestable = ({ struct, state, requestDataMap }) => {
  useEffect(
    () => {
      console.log("Redux state is", state);
    },
    [state]
  );
  return (
<div> Soggy pasta</div>
)}


...


const mapStateToProps = state => {
  return  {
    state: state
  }
};


export default connect(mapStateToProps, null)(StructRequestable);


और मुझे उम्मीद है कि यह state परिवर्तनों के लिए लकड़हारा के रूप में काम करेगा और कुछ नहीं और यह करता है!
अब, यह (नीचे) काम क्यों नहीं करता और क्या अंतर है? मुझे लगता है कि नीचे का संस्करण सही है, लेकिन स्पष्ट रूप से इस पैरामीटर को जोड़ने से आंतरिक परिवर्तन होता है? क्या इसका प्रभाव के दायरे से कोई लेना-देना है? किसी भी सुझाव के लिए धन्यवाद!

const StructRequestable = ({ struct, state, requestDataMap }) => {
  useEffect(
    (state) => {                                 // <<<<<<<<<<<<<<<<<<<<ADDED STATE HERE. NOTHING ELSE.
      console.log("Redux state is", state);
    },
    [state]
  );
  return (
<div> Soggy pasta</div>
)}


...


const mapStateToProps = state => {
  return  {
    state: state
  }
};


export default connect(mapStateToProps, null)(StructRequestable);

0
rtviii 25 जिंदा 2020, 03:08

1 उत्तर

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

इसे वैरिएबल शैडोइंग के रूप में जाना जाता है, और यह एक सामान्य प्रोग्रामिंग अवधारणा है, इसलिए कुछ भी नहीं हुक या useEffect व्यवहार के साथ क्या करना है। यदि आपके पास सबसे आंतरिक दायरे में नामित एक चर है तो यह उसी नाम के साथ किसी भी बाहरी स्कोप चर को ओवरराइड कर देगा।

useEffect कॉलबैक पैरामीटर नहीं लेता है इसलिए state आपके लॉग में मुझे लगता है कि undefined के रूप में दिखाया जाएगा।

3
James 25 जिंदा 2020, 00:15