'Trẻ em' là gì?
Các tài liệu về React nói rằng bạn có thể sử dụng props.children
trên các thành phần đại diện cho 'hộp chung' và không biết trước về con của chúng. Đối với tôi, điều đó không thực sự rõ ràng. Tôi chắc chắn đối với một số người, định nghĩa đó hoàn toàn hợp lý nhưng với tôi thì không.
Lời giải thích đơn giản của tôi về những gì this.props.children
làm được là nó được sử dụng để hiển thị bất cứ thứ gì bạn bao gồm giữa các thẻ mở và thẻ đóng khi gọi một thành phần.
Một ví dụ đơn giản:
Đây là một ví dụ về một hàm không trạng thái được sử dụng để tạo một thành phần. Một lần nữa, vì đây là một hàm, không có this
từ khóa nên chỉ cần sử dụngprops.children
const Picture = (props) => {
return (
<div>
<img src={props.src}/>
{props.children}
</div>
)
}
Thành phần này chứa một thành phần <img>
đang nhận một số props
và sau đó nó sẽ hiển thị {props.children}
.
Bất cứ khi nào thành phần này được gọi {props.children}
cũng sẽ được hiển thị và đây chỉ là một tham chiếu đến những gì nằm giữa thẻ mở và thẻ đóng của thành phần.
//App.js
render () {
return (
<div className='container'>
<Picture key={picture.id} src={picture.src}>
//what is placed here is passed as props.children
</Picture>
</div>
)
}
Thay vì gọi thành phần bằng thẻ tự đóng <Picture />
nếu bạn gọi thành phần đó sẽ có đầy đủ các thẻ đóng và mở, <Picture> </Picture>
bạn có thể đặt thêm mã vào giữa nó.
Điều này loại bỏ các <Picture>
thành phần khỏi nội dung của nó và làm cho nó có thể tái sử dụng nhiều hơn.
Tham khảo: Giới thiệu nhanh về các đạo cụ của React.children