ในฟังก์ชั่นการเรนเดอร์องค์ประกอบของฉันฉันมี:
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>
);
}
ทุกอย่างแสดงผลได้ดีอย่างไรก็ตามเมื่อคลิก<li>
องค์ประกอบที่ฉันได้รับข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาดที่ไม่ได้แปล: การละเมิดที่ไม่คงที่: วัตถุไม่ถูกต้องในฐานะเด็ก React (พบ: วัตถุที่มีคีย์ {dispatchConfig, dispatchMarker, nativeEvent, เป้าหมาย, currentTarget ชนิด, เหตุการณ์, ฟองสบู่, ยกเลิกได้, timeStamp, defaultPrevented, isTrusted, view , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, ปุ่ม, ปุ่ม, ปุ่มที่เกี่ยวข้อง, เป้าหมาย X, pageY, pageD, isDefaultPrevented, isPropagationStopped, _dispatchID หากคุณต้องการสร้างการแสดงชุดของเด็ก ๆ ให้ใช้อาร์เรย์แทนหรือล้อมรอบวัตถุโดยใช้ createFragment (object) จาก Add-on ของ React
Welcome
ตรวจสอบการแสดงผลของวิธีการ
ถ้าฉันเปลี่ยนไปthis.onItemClick.bind(this, item)
เป็น(e) => onItemClick(e, item)
ภายในฟังก์ชั่นแผนที่ทุกอย่างทำงานได้ตามที่คาดไว้
หากใครบางคนสามารถอธิบายสิ่งที่ฉันทำผิดและอธิบายว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้จะดีมาก
UPDATE 1:
ฟังก์ชั่น onItemClick มีดังต่อไปนี้และการลบ this.setState ส่งผลให้เกิดข้อผิดพลาดหายไป
onItemClick(e, item) {
this.setState({
lang: item,
});
}
แต่ฉันไม่สามารถลบบรรทัดนี้ได้เนื่องจากฉันต้องการอัปเดตสถานะขององค์ประกอบนี้
this.onItemClick
จะดำเนินการอย่างไร