Giter Club home page Giter Club logo

rd3's Introduction

RD3 - Playground for React & D3.js

Live demo

The demo instance may sleep when there is no traffic, if it takes time to load please hold on while the instance starts.

Blog post

https://medium.com/@tibotiber/react-d3-js-balancing-performance-developer-experience-4da35f912484

Description

This is a pet project where I experiment with getting React and D3.js to play well together. The focus is on performance and developer experience, with for goal to enable a powerful data exploration experience for the user, while getting the best developer experience enabling fast prototyping and easy contributions to the dataviz code by D3.js developers with minimal background in React.

Big shout out to @Olical for his great work on react-faux-dom.

rd3's People

Contributors

tibotiber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rd3's Issues

hover tooltip

  • d3 implementation
  • react implementation > styled-component, d3 data binding not needed, easier for linking hover and tooltip over several graphs (called by barchart and provide y() as props)
  • store hover state in redux
  • make sure no d3 render on hover

rxjs debounce (?)

could demo it on one of the text input and compare it with the other

tiny chat with backend

  • server push real-time updates
  • rxjs multiple streams
  • local input updates with debounce
  • new messages updates with minimal stats calculations (only new message)

PR: change Mixins to HOC from react-faux-dom

use higher-order components

see https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html
and http://egorsmirnov.me/2015/09/30/react-and-es6-part4.html

see issue 75 from react-faux-dom

switch the ES6 classes to create components, autobind not necessary when using arrow functions (https://medium.com/komenco/react-autobinding-2261a1092849)

can implement componentDidUpdate to call updateD3 or similar after a shallow/deep prop and state comparison.

can also introduce a resize option when width/height changes

PR: connectFauxDOM with classes/id

  • this.connectFauxDOM('div#d3.d3chart.chart', 'chart') would create a div with id='d3' and class='d3chart chart'
  • this.connectFauxDOM('chart') could also default to div with classes faux-dom (static) and chart (the second argument)

styled components

  • use them
  • create styled div to wrap component instead of style the component

re-rendering

  • generate new text button
  • on keydown
  • validate d3 new, remove, etc. (~state reconciliation)
  • fork react-faux-dom and fix for update
  • add example to fixed fork and post PR
  • implement update for grouped look
  • rxjs debounce

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.