2017-03-31 14 views
7

Tôi đang sử dụng phản ứng 15.4.2 và phản ứng-router4.0.0 và Dự án này đã được khởi động với Create React App.ReactJS - Không xác định prop `activeClassName` trên thẻ <a>. Loại bỏ phần chống đỡ này khỏi phần tử

Đây là mã của tôi.

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import './index.css'; 
import {BrowserRouter as Router,Route,Link} from 'react-router-dom' 


const AboutPage =() => { 
return(
    <section> 
     <h2>This is About page</h2> 
     <Link activeClassName="active" to="/about/nestedone">Nestedone</Link> 
     {' '} 
     <Link activeClassName="active" to="/about/nestedtwo">Nested two</Link> 
    </section> 
) 
} 

const HomePage =() => { 
return(
    <section> 
     <h2>This is Home page</h2> 
     <Link to="/about">About</Link> 
    </section> 
) 
} 

const NestedOne =() => { 
return (
    <section> 
     <h2>Nested page 1</h2> 
    </section> 
) 
} 


const NestedTwo =() => { 
return (
    <section> 
     <h2>Nested page 2</h2> 
    </section> 
) 
} 


ReactDOM.render(
<Router> 
    <section> 
    <Route exact path="/" component={HomePage} /> 
    <Route path="/about" component={AboutPage} /> 
    <Route path="/about/nestedone" component={NestedOne} /> 
    <Route path="/about/nestedtwo" component={NestedTwo} /> 
</section> 
</Router>, 
    document.getElementById('root') 
); 

Khi tôi duyệt /about, tôi nhận được lỗi này:

"Warning: Unknown prop activeClassName on tag. Remove this prop from the element.

Tôi đang làm gì sai ở đây?

Cảm ơn!

+0

bạn có thể muốn sử dụng 'tài sản activeclassName' thay – Brian

+0

Tôi không thấy activeClassName ở đây https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/Link.js Có lẽ bạn nên sử dụng 'phản ứng- router 'thay thế – AlexeyKuznetsov

+0

Trong khoảng trang, tôi chỉ cố gắng thiết lập một liên kết hoạt động tùy thuộc vào URL của tôi khi tôi ở/about/nestedone hoặc/about/nestedtwo. – habibun

Trả lời

13

Thuộc tính activeClassName không phải là tài sản của Liên kết nhưng của NavLink.

Vì vậy, chỉ cần thay đổi mã của bạn để sử dụng NavLink thay vì Link:

const AboutPage =() => { 
return(
    <section> 
     <h2>This is About page</h2> 
     <NavLink activeClassName="active" to="/about/nestedone">Nestedone</NavLink> 
     {' '} 
     <NavLink activeClassName="active" to="/about/nestedtwo">Nested two</NavLink> 
    </section> 
) 

Ghi nhập khẩu NavLink từ react-router-dom:

import { NavLink } from 'react-router-dom' 
+0

Điều này đã khắc phục được sự cố của tôi. Thật lạ lùng, NavLink thậm chí không được liệt kê trong tài liệu: http://knowbody.github.io/react-router-docs/api/Link.html# – agm1984

+1

Tôi nhận được lỗi này ngay cả với NavLink ... không chắc tại sao nó đang bị ném. – captDaylight

+0

@captDaylight bạn có thể chia sẻ câu chuyện không? – coderade

6

activeClassName không phải là tài sản của Link nhưng là NavLink.

Vì phản ứng-router v4 beta8, thuộc tính là active theo mặc định. Xác minh phiên bản nào được cài đặt trong thư mục mô-đun nút của bạn

+1

cảm ơn, hoạt động vẫn không hoạt động, dù sao tôi hạ cấp nó xuống 3. tất cả mọi thứ hoạt động tốt, ngoại trừ IndexRoute – habibun

+0

là bạn nhập '{NavLink} từ 'phản ứng-router-dom''? – psorensen

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