dfilatov / vidom

Library to build UI based on virtual DOM
MIT License
415 stars 16 forks source link

Introduce node(@type=fragment) to avoid unwanted DOM wrappers #204

Closed dfilatov closed 8 years ago

dfilatov commented 8 years ago
import { Component, mountToDom } from 'vidom';

class MyComponent1 extends Component {
  onRender() {
    return (
      <fragment>
        <div>MyComponent1_1</div>
        <MyComponent2/>
        <div>MyComponent1_2</div>
      </fragment>
    );
  }
}

class MyComponent2 extends Component {
  onRender() {
    return (
      <fragment>
        <Component3/>
        <Component4/>
      </fragment>
    );
  }
}

class MyComponent3 extends Component {
  onRender() {
    return <div>MyComponent3</div>;
  }
}

class MyComponent4 extends Component {
  onRender() {
    return (
      <fragment>
        <Component4_1/>
        <Component4_2/>
      </fragment>
    );
  }
}

mountToDom(document.body, <MyComponent1/>);

will produce to DOM:

<body>
  <div>MyComponent1_1</div>
  <div>MyComponent3</div>
  <div>MyComponent4_1</div>
  <div>MyComponent4_2</div>
  <div>MyComponent1_2</div>
</body>
dfilatov commented 8 years ago

See https://github.com/facebook/react/issues/2127 for the same problem in React.