ฉันกำลังทำงานกับโปรเจ็กต์ที่มี typescript, React และ Redux (ทั้งหมดทำงานใน Electron) และฉันพบปัญหาเมื่อฉันรวมองค์ประกอบตามคลาสหนึ่งในอีกอันและพยายามส่งผ่านพารามิเตอร์ระหว่างพวกเขา พูดอย่างหลวม ๆ ฉันมีโครงสร้างต่อไปนี้สำหรับส่วนประกอบคอนเทนเนอร์:
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
และองค์ประกอบลูก:
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
เห็นได้ชัดว่าฉันแค่รวมพื้นฐานเท่านั้นและยังมีอีกมากมายสำหรับทั้งสองคลาสนี้ แต่ฉันยังคงได้รับข้อผิดพลาดเมื่อฉันพยายามเรียกใช้สิ่งที่ดูเหมือนกับฉันเช่นรหัสที่ถูกต้อง ข้อผิดพลาดที่ฉันได้รับ:
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
เมื่อฉันพบข้อผิดพลาดครั้งแรกฉันคิดว่าเป็นเพราะฉันไม่ได้ส่งผ่านอินเทอร์เฟซที่กำหนดอุปกรณ์ประกอบฉากของฉัน แต่ฉันสร้างสิ่งนั้น (ดังที่คุณเห็นด้านบน) แต่ก็ยังใช้งานไม่ได้ ฉันสงสัยว่ามีบางอย่างที่ฉันขาดหายไปหรือ
เมื่อฉันแยก ChildComponent prop ออกจากโค้ดใน ContainerComponent มันจะแสดงผลได้ดี (นอกเหนือจาก ChildComponent ของฉันที่ไม่มีส่วนประกอบที่สำคัญ) แต่ใน JSX typescript ปฏิเสธที่จะคอมไพล์ ฉันคิดว่ามันอาจเกี่ยวข้องกับการตัดการเชื่อมต่อตามบทความนี้แต่ปัญหาในบทความนั้นเกิดขึ้นในไฟล์ index.tsx และเป็นปัญหากับผู้ให้บริการและฉันได้รับปัญหาจากที่อื่น
React.Props
เลิกใช้แล้ว !!