2016-07-24 10 views
0

Wie der Titel sagt, wie kann ich verhindern, dass die # am Ende der URL hinzufügen.Wie verhindert man, dass reactor-Router # zur URL hinzufügt?

routes.jsx

(export default (withHistory, onUpdate) => { 
const history = withHistory? 
       (Modernizr.history ? 
       browserHistory 
       : hashHistory) 
      : null; 
return (
<Router history={history} onUpdate={onUpdate}> 
    <Route path='/' component={App}> 
    <IndexRoute component={quotes} /> 
    <Route path='/app/search' component={SimpleSearch} /> 

    <Route path='pathName' component={Blank1} /> 
     <Route path='pathName/:category' component={Blank1}/> 
     <Route path='pathName/:category(/:page)' component={Blank1}/> 
    <Route path='app/:id' component={Blank1} /> 

    </Route> 

</Router> 

); 
}; 

Methode in blank1.jsx

method(current,previous){ 
    const category= this.props.params.category; 
    const page = current; 
    const path = `/pathName/${category}/${page}`; 
    browserHistory.push(path); 
... 
} 

ich viele Dinge ausprobiert, aber konnte den Link ohne # nicht erhalten. Es fügt # an das Ende und führt weiterhin die componentWillReceiveProps aus, wo ich den Status mit this.setState ändere. Und auch in der Navigation durch keine der Navigationselemente sind nicht aktiv wegen der #

+1

sollten Sie browserHistory verwenden Urls ohne Hash zu bekommen –

Antwort

0

Sie beziehen sich auf clean URLs.

Sie wollen browserHistory verwenden statt hasHistory/

Sie benötigen dann eine * Route in Ihrem Server hinzuzufügen, so dass alle Anforderungen über Router Reagieren weitergeleitet werden.

So etwas wie dies am Ende Ihres Servers Routen:

app.get('*', function (req, res) { 
    res.sendFile(path.join(__dirname, 'public', 'index.html')) 
}); 

Für weitere Informationen Kasse this example

+0

in meinem server.js ich habe App. get ('*', Funktion (req, res, next) { rendernHTML (req, res, next); }); –