2015-09-03 13 views
5

मेरी घटक में मैं निम्नलिखित है: this कोRedux का उपयोग करते समय प्रतिक्रिया घटक में सदस्यता समाप्त कैसे की जानी चाहिए?

Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.

क्या मैं जानना चाहते हैं है मैं unsubscribe बताए किया जाना चाहिए या नहीं है:

componentWillMount: function() { 
    this.unsubscribe = store.subscribe(function() { 
    this.setState({message: store.getState().authentication.message}); 
    }.bind(this)); 
}, 

componentWillUnmount: function() { 
    this.unsubscribe(); 
}, 

कॉल नहीं सदस्यता समाप्त निम्न त्रुटि का कारण बनता है इसे असाइन करने के लिए एक बेहतर जगह?

+0

आपको घटक WillMount() के बजाय घटकडिडमाउंट() में प्रयास करना चाहिए। – legolandbridge

+0

@legolandbridge जो कोई फर्क नहीं पड़ता क्योंकि मुझे अभी भी 'सदस्यता समाप्त करने की आवश्यकता है'। – Clarkie

+0

क्या आपने 'रिएक्ट-रेडक्स' के 'कनेक्ट' और' प्रदाता 'का उपयोग करने में देखा है? –

उत्तर

4

टिप्पणियों में ऊपर Salehen Rahman द्वारा उल्लिखित अनुसार मैंने react-redux का उपयोग करके समाप्त किया।

function mapStateToProps(state) { 
    return { 
    users: state.users.items 
    }; 
} 

और एक रंगमंच की सामग्री के रूप में घटक में पारित कर दिया कार्यों के लिए भेजा कार्यों मैप करने के लिए:

अपनी दस्तावेज़ीकरण के बाद मैं दो काम करता है, एक घटक के भीतर रंगमंच की सामग्री के लिए 'वैश्विक राज्य' मैप करने के लिए बनाया:

function mapDispatchToProps(dispatch) { 
    return { 
    lockUser: (id) => dispatch(actions.lockUser(id)), 
    unlockUser: (id) => dispatch(actions.unlockUser(id)), 
    updateUser: (id, user) => dispatch(actions.updateUser(id, user)), 
    addUser: (user) => dispatch(actions.addUser(user)) 
    }; 
} 

यह तो सभी को एक साथ खींच लिया जाता है connect विधि का उपयोग कर:

export default connect(mapStateToProps, mapDispatchToProps)(UsersContainer); 

मुझे एहसास है कि यह सब हुड के नीचे होता है यह घटक के लिए unsubscribe विधि संलग्न करता है लेकिन यह चीजों को काफी सरल बनाता है।

+1

हुड के तहत यह वास्तव में 'सदस्यता 'को' सदस्यता 'से जोड़ता है-लेकिन आपका घटक नहीं। प्रतिक्रिया Redux 'कनेक्ट() 'एक मध्यवर्ती घटक उत्पन्न करता है: यही कारण है कि आप' this.props' के रूप में डेटा प्राप्त करते हैं, और 'this.state' के रूप में नहीं। आपको संभवतः हाथ-रोलिंग के बजाए ज्यादातर मामलों में रिएक्ट रेडक्स का उपयोग करना चाहिए क्योंकि इसमें कुछ प्रदर्शन अनुकूलन हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे