tôi có thành phần này:Làm thế nào để vô hiệu hóa nút trong React.js
import React from 'react';
export default class AddItem extends React.Component {
add() {
this.props.onButtonClick(this.input.value);
this.input.value = '';
}
render() {
return (
<div className="add-item">
<input type="text" className="add-item__input" ref={(input) => this.input = input} placeholder={this.props.placeholder} />
<button disabled={!this.input.value} className="add-item__button" onClick={this.add.bind(this)}>Add</button>
</div>
);
}
}
Tôi muốn các nút bị vô hiệu khi giá trị đầu vào là rỗng. Nhưng đoạn mã trên không hoạt động. Nó nói:
add-item.component.js:78 Uncaught TypeError: Cannot read property 'value' of undefined
trỏ đến disabled={!this.input.value}
. Tôi có thể làm gì sai ở đây? Tôi đoán rằng có lẽ ref chưa được tạo ra khi phương thức render
được thực thi. Nếu, do đó, workararound là gì?
Đây là câu trả lời đúng! Trạng thái nội bộ nên được sử dụng để cập nhật thay đổi đầu vào và nút đơn giản nên kiểm tra điều này. +1 –
this.state có giới hạn là nó hiển thị lại giao diện người dùng vì vậy nếu bạn nhập vào một hộp văn bản trong thành phần con và đã ràng buộc với sự kiện onChange, nó sẽ mất tiêu điểm từ hộp văn bản. Nếu nó trong cùng một thành phần thì tốt nhưng khi được sử dụng trong một thành phần con nó sẽ mất tiêu điểm. – Dynamic
@Dynamic Điều đó không nên xảy ra. Bạn có một ví dụ làm việc về điều đó? –