2016-02-27 15 views
15

Tôi có lớp ReactJS sau:Gọi một hàm tĩnh vào lớp Phản ứng ES6

import React from 'react' 

export class Content extends React.Component { 

    static getValue(key) { 
    return key 
    } 

    render() { 
    let value = this.getValue(this.props.valueKey); 
    return <span dangerouslySetInnerHTML={{__html: value}} /> 
    } 
} 

Nhưng tôi đã được lỗi sau:

TypeError: this.getValue is not a function 

Tôi không hiểu. Đây có phải là cách tốt để gọi một hàm tĩnh không? Tôi nghĩ rằng phản ứng đang làm một cái gì đó với statics, nhưng tôi không biết những gì.

+0

* "đó là cách tốt để gọi một hàm tĩnh?" * Vì nó không hoạt động, có thể không: P –

Trả lời

23

Một phương pháp tĩnh cần được truy cập trên lớp không phải là một cá thể. Vì vậy, trong trường hợp của bạn, sử dụng:

Content.getValue()

Tuy nhiên, một phương pháp tĩnh sẽ không thể truy cập vào this - Tôi không nghĩ rằng bạn muốn phương pháp này được tĩnh dựa trên mẫu mã của bạn ở trên.

thêm: Static Members in ES6

+0

Hàm 'getValue' chính là tĩnh - vì vậy nó có thể được gọi với this.constructor.getValue (params) ... Tôi sử dụng phương pháp này thường xuyên trong mã của tôi. Tôi không thấy lý do cho hàm này không tĩnh, trừ khi 'this' cần được gọi bên trong hàm. – Sprose

7

Bạn có thể truy cập từ bên trong lớp như this.constructor.getValue.

Chỉnh sửa: Tôi đã thêm một JSFiddle here. Sự thay đổi duy nhất tôi thực hiện là bổ sung thêm lời gọi hàm từ hàm tạo và loại bỏ innerHTML được đặt nguy hiểm - Như được hiển thị, bạn có thể truy cập getValue tĩnh từ this.constructor, và hoạt động tốt.

+0

Không có 'React.Component' – Ajouve

+1

Không chính xác - bạn có thể. Tin tôi lần này đi. Tôi sẽ thêm một JSBin –

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