मैं एक कंटेनर घटक से एक प्रस्तुति घटक को अलग करने की कोशिश कर रहा हूं। मेरे पास एक SitesTable
और एक है SitesTableContainer
। वर्तमान उपयोगकर्ता के आधार पर उपयुक्त साइटों को लाने के लिए कंटेनर Redux क्रियाओं को चालू करने के लिए जिम्मेदार है।
समस्या यह है कि वर्तमान उपयोगकर्ता को अतुल्यकालिक रूप से प्राप्त किया जाता है, क्योंकि कंटेनर घटक शुरू में प्रदान किया जाता है। इसका मतलब यह है कि कंटेनर घटक को नहीं पता है कि उसे अपने componentDidMount
फ़ंक्शन में कोड को फिर से निष्पादित करने की आवश्यकता है जो डेटा को भेजने के लिए अद्यतन करेगा SitesTable
। मुझे लगता है कि जब मेरे प्रॉपर (उपयोगकर्ता) में से एक में बदलाव होता है तो मुझे कंटेनर घटक को फिर से प्रस्तुत करना होगा। मैं इसे सही तरीके से कैसे करूं?
class SitesTableContainer extends React.Component {
static get propTypes() {
return {
sites: React.PropTypes.object,
user: React.PropTypes.object,
isManager: React.PropTypes.boolean
}
}
componentDidMount() {
if (this.props.isManager) {
this.props.dispatch(actions.fetchAllSites())
} else {
const currentUserId = this.props.user.get('id')
this.props.dispatch(actions.fetchUsersSites(currentUserId))
}
}
render() {
return <SitesTable sites={this.props.sites}/>
}
}
function mapStateToProps(state) {
const user = userUtils.getCurrentUser(state)
return {
sites: state.get('sites'),
user,
isManager: userUtils.isManager(user)
}
}
export default connect(mapStateToProps)(SitesTableContainer);