Ai đó có thể giải thích cho tôi lý do tại sao Redux có hai chức năng mapStateToProps
và mapDispatchToProps
cả hai đều thêm đạo cụ vào một vùng chứa?Tại sao mapStateToProps và mapDispatchToProps không chỉ là một hàm trong Redux?
Định nghĩa:
mapStateToProps là một tiện ích giúp thành phần của bạn được cập nhật nhà nước (được cập nhật bởi một số thành phần khác)
mapDispatchToProps là một tiện ích mà sẽ giúp thành phần của bạn để bắn sự kiện hành động (gửi hành động có thể gây ra thay đổi của trạng thái đơn đăng ký)
Tại sao nhóm Redux chọn chia thành hai hàm ánh xạ - tức là tại sao không chỉ có một hàm mapToProps (trạng thái, công văn, đạo cụ) làm cả hai?
- Có phải chỉ tách mối quan tâm/dễ hiểu hơn không?
- Có phải do các vấn đề về hiệu suất có ràng buộc lại trong
mapDispatchToProps
tạo ra các chức năng mới cho mọi thay đổi không? Có chức năng riêng biệt cho các ràng buộc sáng tạo hành động sẽ giúp tránh việc làm thêm này? Xét rằngmapStateToProps
được gọi trên mọi thay đổi trạng thái.
Ví dụ:
const increaseAction = { type: 'increase' }
class Counter extends Component {
render() {
const { value, onIncreaseClick } = this.props
return (
<div>
<span>{value}</span>
<button onClick={onIncreaseClick}>Increase</button>
</div>
)
}
}
function mapDispatchToProps(dispatch) {
return {
onIncreaseClick:() => dispatch(increaseAction)
}
}
Xem này Redux example on codesandbox
Tác giả của Redux Dan Abramov giải thích [tại đây] (https://www.youtube.com/watch?v=VJ38wSFbM3A&feature=youtu.be&t=2455) rằng 'mapDispatchToProps' phân bổ chức năng cho mọi người tạo hành động một hoạt động rất tốn kém để làm lại khi bạn có nhiều thành phần. Có vẻ như có hai cơ chế khác nhau phát hiện khi redux cần cập nhật các ràng buộc của người tạo và hành động - do đó có hai hàm khác nhau: 'mapStateToProps' và' mapDispatchToProps'. Đây có phải là câu trả lời không? –