<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react/dist/react-with-addons.min.js"></script>
<script src="https://unpkg.com/react-dom/dist/react-dom.min.js"></script>
<script src="https://unpkg.com/react-virtualized/dist/umd/react-virtualized.js"></script>
<link rel="stylesheet" href="https://unpkg.com/react-virtualized/styles.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="example">
<!-- This element's contents will be replaced with your code... -->
</div>
<script src="script.js"></script>
</body>
</html>
var AutoSizer = ReactVirtualized.AutoSizer;
class TestComponent extends React.Component<undefined, undefined> {
render() {
return (
<div>
{this.props.someMessage}
</div>
);
}
}
class ComponentA extends React.Component<undefined, undefined> {
render() {
let autoSizerMessage1 = "Hello from AutoSizer 1";
let testComponent2Props = {
someMessage: "Hello from AutoSizer 2"
};
return (
<div>
<div>
AutoSizer 1: 'someMessage' property passed explicitly
<AutoSizer someMessage={autoSizerMessage1}>
{this.renderTestComponentWithNoProps}
</AutoSizer>
</div>
<br/>
<div>
AutoSizer 2: 'someMessage' property passed via spread operator
<AutoSizer {...testComponent2Props}>
{this.renderTestComponentWithNoProps}
</AutoSizer>
</div>
<br/>
<div>
AutoSizer 3: 'someMessage' property pass both explicitly and via the test components own props
<AutoSizer someMessage="Hello from AutoSizer 3">
{this.renderTestComponentWithOwnProps}
</AutoSizer>
</div>
<br/>
</div>
);
}
renderTestComponentWithNoProps(dims: Dimensions) {
const { width, height } = dims;
return (
<TestComponent />
);
}
renderTestComponentWithOwnProps(dims: Dimensions) {
const { width, height } = dims;
let testComponentProps = {
someMessage: "Here is a message supplied via own props"
}
return (
<TestComponent {...testComponentProps}/>
);
}
}
// Render
ReactDOM.render(
<div>
<ComponentA />
</div>,
document.getElementById('example')
);
.List {
border: 1px solid black;
box-sizing: border-box;
}
.Row {
width: 100%;
height: 100%;
border-bottom: 1px solid black;
display: flex;
align-items: center;
padding: 0 0.5rem;
box-sizing: border-box;
}