Tôi rất mới để phát triển ứng dụng React-redux và tôi đang cố gắng hiểu cách gửi một hành động khác ngay khi tải trang. Sau đây là mã vùng chứa của tôi. Tôi đang sử dụng bản mẫu này (https://github.com/jpsierens/webpack-react-redux).React redux dispatch action trước khi render container
let locationSearch;
const ActivationPage = ({activateUser}) => {
return (
<div className="container">
<h2>Activation Required</h2>
<p>An Activation Email was sent to your email address. Please check your inbox to find the activation link</p>
{ activateUser() }
</div>
);
};
ActivationPage.propTypes = {
activateUser: PropTypes.func
};
const mapStateToProps = (state) => {
return {
message: state.message,
currentUser: state.currentUser,
request: state.request
};
};
const mapDispatchToProps = (dispatch) => {
return {
activateUser:() => {
console.log(location);
if (location.search !== '') {
locationSearch = querystring.parse(location.search.replace('?', ''));
console.log(locationSearch);
if (locationSearch.hasOwnProperty('user_id') && locationSearch.hasOwnProperty('activation_code')) {
// change request state to pending to show loader
dispatch(actions.requestActions.requestPending());
}
}
}
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(ActivationPage);
Bộ luật này mang lại cho tôi Cảnh báo: setstate (...): Không thể cập nhật trong một cuộc chuyển trạng thái hiện lẽ bởi vì tôi đang cử một hành động trong thời gian làm cho chức năng (IDK). Làm thế nào tôi có thể chuyển đổi mã đã cho để kích hoạt chức năng activateUser() tự động ngay sau khi tải trang.
@Saad Anjum bạn cần thay đổi 'ActivationPage' để mở rộng' React.Component' để sử dụng các chức năng vòng đời được đề cập trong câu trả lời này. –
cảm ơn bạn @MichaelPeyper và Yozi đã đẩy tôi đi đúng hướng. Giờ nó đã hoạt động. –