Можно ли реагировать, пропуская некоторые dom-узлы на гидрате, которые отличаются от серверного рендера.

Если мой серверный компонент, например:

class Test extends React.Component { 
...
render() {
return <React.Fragment>
    <div> {this.props.server_data} </div>
    <div onClick={make_this_div_update_on_client}> 
         {this.state.client_staff}
    </div>
    </React.Fragment >
   }
}

и на сервере я буду рендерить с реквизитом, которые не доступны на клиенте

ReactDOMServer.renderToString(<Test server_data="Hello from server!" />)

но на фронтенде, когда я регидратирую приложение с помощью:

ReactDOM.hydrate(<Test />, document.querySelector(".app"));

Он обновляет этот узел DOM, потому что this.props.server_data пусто.

Как я могу реагировать, чтобы не трогать некоторые узлы DOM, созданные на сервере, и гидрировать только другие части дерева? Возможно ли такое поведение?

Например что-то вроде этого:

class Test extends React.Component { 
...
render() {
return <React.Fragment>
    <div donTouchThisOnClient> {this.props.server_data} </div>
    <div onClick={make_this_div_update_on_client}> 
      {this.state.client_staff} 
    </div>
    </React.Fragment >
   }
}

0 ответов

Другие вопросы по тегам