src/First.tsx:
src/Second.tsx:
src/Third.tsx:
src/index.tsx:
Output:
import React, { Component } from "react";
import Second from "./Second";
interface IState {
key1: string;
key2: number;
key3: any[];
}
interface IProps {}
class First extends Component<IProps, IState> {
constructor(props: IProps) {
super(props);
this.state = {
key1: "Atharva Agrawal",
key2: 1,
key3: [
{
name: "Shirt",
price: 100,
rating: 2.5,
image:
"https://pisco.meaww.com/6ec1615c-5a8d-45ab-b7e1-04e1ad228f7d.634818810",
},
{
name: "Polo Shirt",
price: 200,
rating: 2.5,
image:
"https://pisco.meaww.com/6ec1615c-5a8d-45ab-b7e1-04e1ad228f7d.634818810",
},
],
};
}
render() {
return (
<React.Fragment>
<Second
key1={this.state.key1}
key2={this.state.key2}
key3={this.state.key3}
>
{" "}
{"ReactJS with TypeScript"}{" "}
</Second>
</React.Fragment>
);
}
}
export default First;
src/Second.tsx:
import React, { Component } from "react";
import Third from "./Third";
interface IState {}
interface IProps {
key1: string;
key2: number;
key3: any[];
}
class Second extends Component<IProps, IState> {
constructor(props: IProps) {
super(props);
}
render() {
return (
<React.Fragment>
<Third
key1={this.props.key1}
key2={this.props.key2}
key3={this.props.key3}
key4={this.props.children}
></Third>
</React.Fragment>
);
}
}
export default Second;
src/Third.tsx:
import React, { Component } from "react";
interface IState {}
interface IProps {
key1: string;
key2: number;
key3: any[];
key4: any;
}
class Third extends Component<IProps, IState> {
constructor(props: IProps) {
super(props);
}
render() {
return (
<React.Fragment>
<h1> {this.props.key1} </h1>
<h2> {this.props.key2} </h2>
<h2> {this.props.key4} </h2>
<table>
<tr>
<th>SNO</th>
<th>NAME</th>
<th>PRICE</th>
<th>RATING</th>
<th>IMAGE</th>
</tr>
{this.props.key3.map((element, index) => (
<tr key={index}>
<td> {index + 1} </td>
<td> {element.name} </td>
<td> {element.price} </td>
<td> {element.rating} </td>
<td>
{" "}
<img
width="100"
src={element.image}
alt={element.name}
></img>{" "}
</td>
</tr>
))}
</table>
</React.Fragment>
);
}
}
export default Third;
src/index.tsx:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import First from "./First";
ReactDOM.render(
<React.StrictMode>
<First />
</React.StrictMode>,
document.getElementById('root')
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
Output:
