Trong chức năng kết xuất của thành phần tôi có:
render() {
const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
return (<li onClick={this.onItemClick.bind(this, item)} key={item}>{item}</li>);
});
return (
<div>
...
<ul>
{items}
</ul>
...
</div>
);
}
mọi thứ đều ổn, tuy nhiên khi nhấp vào <li>
phần tử tôi nhận được lỗi sau:
Uncaught Error: Vi phạm bất biến: Các đối tượng không hợp lệ như là một đứa trẻ React (đã tìm thấy: đối tượng có các khóa {ClarkConfig, ftimeMarker, localEvent, target, currentTarget, type, eventPhase, bubble, hủy bỏ, timeStamp, defaultPrevented, isTrust, view , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, nút, nút, có liên quanTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListener, _dispatchList Nếu bạn có ý định kết xuất một bộ sưu tập trẻ em, hãy sử dụng một mảng thay thế hoặc bọc đối tượng bằng cách sử dụng createFragment (đối tượng) từ các tiện ích bổ sung React. Kiểm tra phương thức render của
Welcome
.
Nếu tôi thay đổi để this.onItemClick.bind(this, item)
cho (e) => onItemClick(e, item)
bên trong mọi thứ suôn sẻ chức năng bản đồ như mong đợi.
Nếu ai đó có thể giải thích những gì tôi đang làm sai và giải thích tại sao tôi gặp lỗi này, sẽ rất tuyệt
CẬP NHẬT 1:
chức năng onItemClick như sau và loại bỏ this.setState dẫn đến lỗi biến mất.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Nhưng tôi không thể xóa dòng này vì tôi cần cập nhật trạng thái của thành phần này
this.onItemClick
thực hiện như thế nào ?