У меня проблема с использованием response, redux и response router.
Когда я просматриваю страницы с помощью <Link>, компоненты не полностью перерисовываются.
Например: если я нахожусь на странице входа и перехожу на страницу регистрации (используя ссылку), в последнем случае некоторые элементы css / js не будут отображаться правильно.
Вот мой код: (без импорта и нерелевантных деталей)
class App extends Component {
render() {
return (
<div className = "container-scroller">
<LoadingBar showFastActions style = {{ backgroundColor: 'orange', height: '4px' }} />
<BrowserRouter>
<Router history = {History}>
<Switch>
<PrivateRoute exact path = "/" component = {DashboardPage} />
<PrivateRoute exact path = "/facility" component = {FacilityPage} />
<Route exact path = "/register" component = {RegisterPage} />
<Route exact path = "/signin" component = {SignInPage} />
<Route exact path = "/signout" component = {Signout} />
<Route component = {NotFoundPage} />
</Switch>
</Router>
</BrowserRouter>
</div>
);
}
}
export default App;
class SignInPage extends Component {
constructor(props) {
super(props);
this.state = {
email: '',
password: ''
};
}
handleChangeEvent = e => {
const { name, value } = e.target;
this.setState({ [name]: value });
}
handleSubmit = e => {
e.preventDefault();
this.props.signIn(this.state.inputEmail, this.state.inputPassword);
}
render() {
{/* redirect user if already logged in */}
let token = localStorage.getItem('token');
if (token) {
return <Redirect to='/' />
}
return (
// sign in form
<div className = "mt-3 text-center">
<Link to = "/register" className = "auth-link text-white">
Don't have an account ?
<span class = "font-weight-medium"> Sign in</span>
</Link>
</div>
)
}
}
const mapStateToProps = state => {
return {
errors: state.auth.errors,
};
}
const mapDispatchToProps = dispatch => {
return {
signIn: (email, password) => {
return dispatch(userActions.signIn(email, password));
}
};
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SignInPage));
import '../../node_modules/jquery-validation/dist/jquery.validate.min.js';
import '../assets/js/form-validation.js';
class RegisterPage extends Component {
constructor(props) {
super(props);
this.state = {
email: '',
password: '',
password_confirmation: '',
first_name: '',
last_name: '',
};
}
handleChangeEvent = e => {
const { name, value } = e.target;
this.setState({ [name]: value });
}
handleSubmit = e => {
e.preventDefault();
}
render() {
{/* redirect user if already logged in */}
let token = localStorage.getItem('token');
if (token) {
return <Redirect to='/' />
}
return (
// register form
)
}
}
const mapStateToProps = state => {
return {
errors: state.users.errors,
};
}
const mapDispatchToProps = dispatch => {
return {
signIn: (email, password, firstName, lastName) => {
return dispatch(userActions.register(email, password, firstName, lastName));
}
};
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(RegisterPage));
Похоже, что не только я столкнулся с этой проблемой. Я пробовал решение withRouter, но оно не работает.
Может кто-нибудь мне помочь ?
Заранее спасибо !
В файле index.js, который создает хранилище redux и отображает компонент приложения. CSS работает на странице регистрации, но некоторые элементы, такие как флажок, не отображаются на странице, а кнопки не работают. И 2 файла JS, которые я импортирую на моей странице RegisterPage, похоже, не импортируются.
Я думаю, вам следует проверить, правильно ли вы импортируете эти необходимые файлы. проверьте, правильно ли экспортируются модули из этих файлов. и если у вас есть стили, специфичные для компонентов, я думаю, что лучше импортировать непосредственно в эти компоненты, чем широкий импорт в index.js
Что именно не так с рендером? Можете ли вы создать рабочую скрипку (представляющую ошибку)? Я думаю, что компонент, возвращаемый withRouter, не делает именно то, что вы ожидаете.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


откуда ваш css импортируется из