123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- let ProductCategoryRow = React.createClass({
- name: "ProductCategoryRow",
- componentDidMount: function () {
- console.log("Component did mountDM", this.name);
- },
- getInitialState: function () {
- console.log("Get Initial State", this.name);
- return { data: [] };
- },
- render: function () {
- return (<tr><th colSpan="2">{this.props.category}</th></tr>);
- }
- });
- let ProductRow = React.createClass({
- name: "ProductRow",
- componentDidMount: function () {
- console.log("Component did mountDM", this.name);
- },
- getInitialState: function () {
- console.log("Get Initial State", this.name);
- return { data: [] };
- },
- render: function () {
- let name = this.props.product.stocked
- ? this.props.product.name
- : <span style={{color: 'red'}}>{this.props.product.name}</span>;
- return (
- <tr>
- <td>{name}</td>
- <td>{this.props.product.price}</td>
- </tr>
- );
- }
- });
- let ProductTable = React.createClass({
- name: "ProductTable",
- componentDidMount: function () {
- console.log("Component did mountDM", this.name);
- },
- getInitialState: function () {
- console.log("Get Initial State", this.name);
- return { data: [] };
- },
- render: function () {
- let rows = [];
- let lastCategory = null;
- this.props.products.forEach(function (product) {
- if (product.category !== lastCategory) {
- rows.push(<ProductCategoryRow category={product.category} key={product.category} />);
- }
- rows.push(<ProductRow product={product} key={product.name} />);
- lastCategory = product.category;
- });
- return (
- <table>
- <thead>
- <tr>
- <th>Name</th>
- <th>Price</th>
- </tr>
- </thead>
- <tbody>
- {rows}
- </tbody>
- </table>
- );
- }
- });
- let SearchBar = React.createClass({
- name: "SearchBar",
- componentDidMount: function () {
- console.log("Component did mountDM", this.name);
- },
- getInitialState: function () {
- console.log("Get Initial State", this.name);
- return { data: [] };
- },
- render: function () {
- return (
- <form>
- <input type="text" placeholder="Search..." />
- <p>
- <input type="checkbox" />
- {' '}
- Only show products in stock
- </p>
- </form>
- );
- }
- });
- let FilterableProductTable = React.createClass({
- name: "FilterableProductTable",
- componentDidMount: function () {
- console.log("Component did mountDM", this.name);
- },
- getInitialState: function () {
- console.log("Get Initial State", this.name);
- return { data: [] };
- },
- render: function () {
- return (
- <div>
- <SearchBar />
- <ProductTable products={this.props.products} />
- </div>
- );
- }
- });
- ReactDOM.render(
- <FilterableProductTable products={[]} />,
- document.getElementById("content")
- );
|