Tôi vẫn còn khá mới trong React, nhưng tôi đã bắt đầu từ từ và tôi đã gặp phải điều gì đó mà tôi đang mắc kẹt.
Tôi đang cố gắng xây dựng một thành phần "bộ đếm thời gian" trong React và thành thật mà nói, tôi không biết liệu mình đang làm điều này đúng (hoặc hiệu quả). Trong mã của tôi dưới đây, tôi thiết lập nhà nước để trả về một đối tượng { currentCount: 10 }
và đã toying với componentDidMount
, componentWillUnmount
và render
và tôi chỉ có thể nhận được trạng thái để "đếm ngược" 10-9.
Câu hỏi gồm hai phần: Tôi đang làm gì sai? Và, có cách nào hiệu quả hơn để sử dụng setTimeout (thay vì sử dụng componentDidMount
& componentWillUnmount
) không?
Cảm ơn bạn trước.
import React from 'react';
var Clock = React.createClass({
getInitialState: function() {
return { currentCount: 10 };
},
componentDidMount: function() {
this.countdown = setInterval(this.timer, 1000);
},
componentWillUnmount: function() {
clearInterval(this.countdown);
},
timer: function() {
this.setState({ currentCount: 10 });
},
render: function() {
var displayCount = this.state.currentCount--;
return (
<section>
{displayCount}
</section>
);
}
});
module.exports = Clock;
this.timer.bind(this)
vì this .timer riêng của nó đã không hoạt động
class Clock extends Component
tự động liên kết các phương thức, nhưng không tự động liên kết. Vì vậy, nó phụ thuộc vào cách bạn đang tạo các thành phần của mình liệu bạn có cần liên kết hay không.
bind(this)
không còn cần thiết, phản ứng tự thực hiện điều này ngay bây giờ.