2016-01-19 28 views
8

Tôi đã triển khai ứng dụng thử nghiệm JS phản ứng với bộ định tuyến phản ứng trong ES6 nhưng có vẻ như nó không hoạt động. Đoạn mã i bên dưới:Điều hướng bộ định tuyến phản ứng không hoạt động

app.js 
------- 

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import Routes from './routes'; 

ReactDOM.render(Routes, document.getElementById('react-container')); 

routes.js 
--------- 

import React from 'react'; 
import { DefaultRoute, Link, Route, RouteHandler,Router } from 'react-router'; 
import Page1 from './page1'; 
import Home from './home'; 
import { IndexRoute } from 'react-router'; 

let routes = 
    <Router> 
    <Route path="/" component={Home}> 
     <Route path="page1" component={ Page1 }/> 
    </Route> 
    </Router> 

export default routes 

home.js 
------- 

import React, { Component } from 'react'; 
import Header from './components/header'; 

export default class Home extends Component { 
    constructor() { 
    super(); 
    } 

    render() { 
    return (
     <div> 
     <Header /> 
     {this.props.children} 
     </div> 
    ); 
    } 
} 

page1.js 
-------- 

import React, { Component } from 'react'; 

export default class Page1 extends Component { 
    constructor() { 
    super(); 
    } 

    render() { 
    return (
     <div> 
     <h1> Page 1 </h1> 
     </div> 
    ); 
    } 
} 

Điều hướng đến "/" và "/ page1" dường như nằm trong trang chỉ phần tiêu đề. Bất kỳ trợ giúp nào được đánh giá cao.

+0

Bất kỳ cách nào bạn có thể hiển thị cho chúng tôi thành phần Page1? –

+0

@NaderDabit Trang1.js cũng được bao gồm ở trên. – KarthikJ

Trả lời

0

Bạn nên bỏ qua số constructor khi không hoạt động. Phương thức khởi tạo mặc định là:

constructor(...args) { 
    super(...args); 
} 

Vì vậy, các đối số đạo cụ ngầm không được chuyển vào thành phần Home.

+0

Cảm ơn bạn đã phản hồi nhanh chóng. Tôi loại bỏ tất cả các nhà xây dựng vì nó không làm bất cứ điều gì nhưng vẫn điều hướng không hoạt động. – KarthikJ

6

Có vẻ như bạn muốn hiển thị page1 để hiển thị khi điều hướng đến /? Nếu vậy, docs seem to indicate rằng bạn sẽ cần một IndexRoute có / đường đến page1 theo mặc định:

let routes = (
    <Router> 
    <Route path="/" component={Home}> 
     <IndexRoute component={Page1} /> 
    </Route> 
    </Router> 
); 
1

tôi đã không thể kiểm tra điều này, nhưng tôi nghĩ rằng nếu không có cung cấp một lịch sử, phản ứng-router sẽ không thể đọc vị trí URL. Vì vậy, nó sẽ có ý nghĩa cho nó để chỉ render đường dẫn /.

<Router history={browserHistory}> 
... 
</Router> 
+0

Tôi khá chắc chắn điều này, kết hợp với một tuyến đường chỉ mục là giải pháp. – Aaron

0

Hầu hết các câu trả lời liên lạc bằng các cá nhân, nhưng tôi nghĩ rằng bạn cần phải kết hợp một con đường chỉ mục, lịch sử trình duyệt, và biến xuất khẩu của bạn thành một thành phần phản ứng như thế này:

import { Router, browserHistory } from 'react-router' 

const Routes =() => { 
    return (
     <Router history={browserHistory}> 
      <Route path="/" component={Home}> 
       <IndexRoute component={Page1}/> 
      </Route> 
     </Router> 
    ) 
} 

export default Routes; 

này nên có giá trị cho phiên bản mới nhất của React Router (2.0.0-rc5)

Các vấn đề liên quan