Tôi đang cố gắng tách một thành phần thuyết trình khỏi một thành phần vùng chứa. Tôi có một SitesTable
và một SitesTableContainer
. Vùng chứa chịu trách nhiệm kích hoạt các hành động redux để tìm nạp các trang web thích hợp dựa trên người dùng hiện tại.
Vấn đề là người dùng hiện tại được tìm nạp không đồng bộ, sau khi thành phần vùng chứa được hiển thị ban đầu. Điều này có nghĩa là thành phần vùng chứa không biết rằng nó cần thực thi lại mã trong componentDidMount
chức năng của nó để cập nhật dữ liệu để gửi tới SitesTable
. Tôi nghĩ rằng tôi cần kết xuất lại thành phần vùng chứa khi một trong các đạo cụ (người dùng) của nó thay đổi. Làm cách nào để làm điều này một cách chính xác?
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);