Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE HTML>
<body>
<script src="https://fb.me/react-with-addons-0.14.7.min.js"></script>
<script src="https://fb.me/react-dom-0.14.7.min.js"></script>
<script src="https://npmcdn.com/mobx@2.4.2/lib/mobx.umd.js"></script>
<script src="https://npmcdn.com/mobx-react@3.0.0/index.js"></script>
  <div id="app" />
</body>
 
const {observable, computed} = mobx;
const {observer} = mobxReact;
class MsiTaskList {
  @observable tasks = [];
  constructor(tasks) {
    this.tasks.replace(tasks);
  }
}
class MsiProject {
  id = '';
  @observable name = '';
  @observable taskLists = [];
  constructor(id, name, taskLists) {
    this.id = id;
    this.name = name;
    const lists = taskLists.map(list => new MsiTaskList(list));
    this.taskLists.replace(lists);
  }
  
  @computed get allTasks() {
    return this.taskLists.reduce((result, list) => {
      list.tasks.forEach(task => result.push(task));
      return result;
    }, []);
  }
}
const msiProject = new MsiProject('id', 'project', [
  [
    { name: 'write report'},
    { name: 'set grade' }
  ], [
    { name: 'build stuff'},
    { name: 'rate thing' }
  ]
]);
function App() {
  return <div> 
    {msiProject.allTasks.map(task => <div> {task.name} </div>)}
  </div>;
}
ReactDOM.render(
  <App />,
  document.getElementById('app')
);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers