Tôi đang cố gắng sử dụng các lớp học ES6 bên trong Phản ứng, và muốn tất cả các thành phần của tôi để kế thừa phương pháp nhất định, tuy nhiên ngay sau khi tôi cố gắng để mở rộng một thành phần mà mở rộng Phản ứng. Lớp thành phần, phương thức componentDidMount không kích hoạt và do đó không có gì được hiển thị. Mã Tôi đang sử dụng:phương pháp componentDidMount không được kích hoạt khi sử dụng ES6 thừa hưởng phản ứng lớp
BaseComponent.jsx
import React from 'react';
class BaseComponent extends React.Component {
constructor() {
super();
console.log('BaseComponent constructor');
}
render() {
return (
<div>Hello, Im the base component</div>
);
}
}
export default BaseComponent;
ExampleComponent.jsx
import BaseComponent from './BaseComponent';
class ExampleComponent extends BaseComponent {
constructor(props) {
super(props);
}
componentDidMount() {
console.log('exampleComponent mounted');
}
render() {
return (
<div>Hello, Im the example component</div>
);
}
}
export default ExampleComponent;
App.jsx
import React from 'react';
React.render(<ExampleComponent />, document.body);
Tôi đang sử dụng Phản ứng 0.13.3, và sử dụng babelify 6.1.2 để transpile.
Chuỗi 'exampleComponent gắn' không bao giờ được ghi lại để an ủi, và không có gì là ra. Bất kỳ ý tưởng những gì tôi đang làm sai?
Vâng, tôi biết ví dụ này là vô ích, nhưng tôi chỉ làm điều này để làm nổi bật vấn đề. Tôi không biết rằng React không cho phép cấu trúc lớp sâu hơn. Dự án của tôi bao gồm một loạt các mẫu có chức năng chung (và chia sẻ cùng một trạng thái), do đó, nó có ý nghĩa để cố gắng đặt điều này trong một lớp cơ sở. Tôi cũng đã đọc các mix-in đó không có sẵn khi sử dụng các lớp React của ES6 - bạn có biết xung quanh điều này không? –
khi bạn có một số thành phần có cùng trạng thái, bạn có thể sử dụng ví dụ thứ hai của mình. Tạo một thành phần mới với các thuộc tính trạng thái và làm cho phần (s), luôn luôn giống nhau và hiển thị nó trong thành phần cụ thể của bạn như bạn có thể thấy ở trên. – marcel