dOrgTech / arc.react

DAO Enable React Applications
22 stars 10 forks source link

Only Rerender "DAO Connected" Components #3

Open dOrgJelli opened 5 years ago

dOrgJelli commented 5 years ago

Only rerender components that are "DAO Connected".

This can be done through supporting a subscription model, where components that depend on additional contextual information (ex: , ).

For example, consider...

<Arc config={new Config("web3provider", "graphqlprovider")}>
  <View1 />
  <DAO address={"0x1234"}>
    <View2 />
    <DAO.Data>
      {data => (
        <View3 value={data.value} />
      )}
    </DAO.Data>
  </DAO>
</Arc>

Ideally, if Arc.Config's web3 provider changes, View1 & 2 shouldn't have to rerender, but View3 should because the data may be different. This can be partially achieved if DAO connect's the Arc.Config's subscriber list, which will cause it to be told to rerender if the config ever changes, but this only causes View1 to not be rendered. View2 would still be rendered because currently the data is stored within the Component's state (the DAO's state), which would cause View2 to still be rendered.

Going to leave this here for now, as it'll be interesting to come back to this after some metrics have been gathered, as I feel this may be premature optimization.

dOrgJelli commented 4 years ago

This needs to be tested once we have an example app