Я использую Semantic-UI React и Next.JS, но он появляется на точке останова <768px, мой компонент Home полностью ломается при обновлении браузера. Я знаю, потому что это приложение реагирует на следующее: они заботятся о маршрутизации, но я думаю, мне было интересно, что, если пользователь это сделает? </p>
Это не происходит в моем / login, / registerили / профильные маршруты
Итак, я решил проверить свою проблему - Здесь , и в этом посте он указывает на React docs ;объяснение, почему это происходит, и рецепт для его решения, похоже, не подходит для моего случая.
То же, что и render (), но используется для гидратации контейнера, содержимое HTML которого было визуализированоReactDOMServer. React попытается присоединить прослушиватели событий к существующей разметке.
React ожидает, что отображаемое содержимое идентично между сервером и клиентом. Он может исправлять различия в текстовом содержимом, но вы должны рассматривать несоответствия как ошибки и исправлять их. В режиме разработки React предупреждает о несоответствиях во время гидратации. Нет никаких гарантий, что различия в атрибутах будут исправлены в случае несоответствия. Это важно по соображениям производительности, поскольку в большинстве приложений несоответствия встречаются редко, и поэтому проверка всей разметки будет непомерно дорогой.
Если атрибут отдельного элемента или текстовое содержимое неизбежно отличается между сервером и клиентом (дляНапример, отметка времени), вы можете отключить предупреждение, добавив к элементу suppressHydrationWarning = {true}. Он работает только на один уровень глубиной и предназначен для спасательного люка. Не злоупотребляйте этим. Если это не текстовый контент, React по-прежнему не будет пытаться его исправить, поэтому он может оставаться непоследовательным до будущих обновлений.
Если вам намеренно нужно отобразить что-то другое на сервере и клиенте, вы можете выполнитьдвухпроходный рендеринг. Компоненты, которые визуализируют что-то другое на клиенте, могут читать переменную состояния, например this.state.isClient, для которой вы можете установить значение true в componentDidMount (). Таким образом, начальный этап рендеринга будет отображать тот же контент, что и сервер, избегая несоответствий, но дополнительный этап будет происходить синхронно сразу после гидратации.
Это файл точки входа: pages/index
import React from 'react'
import Head from '../components/head'
import HomeLayout from '../components/Home/Home.jsx'
import 'semantic-ui-css/semantic.min.css'
import '../styles/styles.scss'
import { connect } from 'react-redux'
// import {bindActionCreators} from 'redux'
// import withRedux from 'next-redux-wrapper'
import { logInUser } from '../store'
class Home extends React.Component {
static async getInitialProps({ isLoggedIn }) {
return { isLoggedIn }
}
render() {
const { isLoggedIn } = this.props
return (
<div>
{console.log("isLoggedIn ", isLoggedIn)}
<Head title = 'Home' />
<HomeLayout isLoggedIn = { isLoggedIn }/>
</div>
)
}
}
export default connect(state => state)(Home);
А это моя pages/_app
import React from 'react'
import { Provider } from 'react-redux'
import App from 'next/app'
import withRedux from 'next-redux-wrapper'
import { initializeStore } from '../store'
export default withRedux(initializeStore)(
class MyApp extends App {
static async getInitialProps({ Component, ctx }) {
return {
pageProps: Component.getInitialProps
? await Component.getInitialProps(ctx)
: {}
}
}
render() {
const { Component, pageProps, store } = this.props
return (
<Provider store={store}>
<Component {...pageProps} />
</Provider>
)
}
}
)
Любая помощь