Ich versuche, react-Router auf dem Server mit dem einfachsten Hallo Welt Beispiel zu laufen, und was auch immer ich mache, ist die Requisiten im Callback immer undefiniert. Seit zwei Tagen versuche ich, dass sich die API ziemlich drastisch geändert hat und alle Antworten, die ich gefunden habe, mit der alten API zusammenhingen.Server-Side-Rendering mit react-Router
Also hier das Super einfachen Codebeispiel:
import http from 'http'
import React from 'react'
import { renderToString } from 'react-dom/server'
import { match, RoutingContext } from 'react-router'
import fs from 'fs'
class Home extends React.Component{
render(){
return <div>{this.props.children}</div>
}
}
class Hello extends React.Component{
render(){
return <h1>Hello World</h1>
}
}
class Routes extends React.Component{
render(){
return (
<Route path="/" component={Home}>
<Route path="hello" component={Hello} />
</Route>
)
}
}
http.createServer((req, res) => {
match({ Routes, location: req.url }, (err, redirect, props) => {
if (props){
let markup = renderToString(<RouterContext {...props}/>)
res.write(markup)
res.end()
} else {
res.write("not found")
res.end()
}
})
}).listen(8888);
Wenn ich eintippe/hallo im Browser, warum es nicht sagen „nicht gefunden“? Laut Dokumentation und API sollte es so funktionieren .. was fehlt mir?
Danke für Ihre Hilfe!
Routen sollten nicht eine Funktion oder Klasse, nur ein Objekt von JSX ' s '. Die Eigenschaft, die 'match()' sucht, ist 'routes', nicht' Routes'. Diese beiden Fixes sollten dich auf den Weg bringen. –
Interrobang
perfekt danke! –