2016-07-14 4 views
1

У меня есть это на моем серверереагировать-маршрутизатор - сервер матч сторона рендеринга

app.get('*', function(req, res) { 
    match({ routes, location: req.url }, (error, redirectLocation, renderProps) => { 
    const body = renderToString(<RouterContext {...renderProps} />) 
    res.send(` 
     <!DOCTYPE html> 
      <html> 
      <head> 
       <link href="//cdn.muicss.com/mui-0.6.5/css/mui.min.css" rel="stylesheet" type="text/css" /> 
      </head> 
      <body> 
       <div id="root">${body}</div> 
       <script defer src="assets/app.js"></script> 
      </body> 
      </html> 
      `) 
    }) 
}) 

И это на стороне клиента

import { Router, hashHistory, browserHistory, match } from 'react-router' 
let history = browserHistory 

//client side, will become app.js 
match({ routes, location, history }, (error, redirectLocation, renderProps) => { 
    render(<Router {...renderProps} />, document.getElementById('root')) 
}) 

проблема Она работает только тогда, когда я удалить (let history = browserHistory), но он добавляет префикс/#/hash к моему URL-адресу (чего я не хочу делать).

Когда я оставляю Выпускаемый (история = browserHistory) там, он бросает ошибку

Предупреждения: React попытки повторного использования разметки в контейнере, но контрольная сумма недействительна. Обычно это означает, что вы используете рендеринг сервера, а разметка, сгенерированная на сервере, не была тем, чего ожидал клиент. React вводит новую разметку для компенсации того, что работает, но вы потеряли многие преимущества рендеринга сервера. Вместо этого выясните, почему генерируется разметка на клиенте или сервере: (клиент) <! - реагировать пустым: 1 - (сервер) < раздел данных reactro

Сообщение об ошибке довольно ясно, однако, я не понимаю, почему он работает с hashHistory, но не с browserHistory

ответ

Смежные вопросы