Death and taxes used to be the only two certainties in life. But no matter how

Srsajol efjt
10 min readDec 9, 2020

Split the context (i.e. create a new SideDrawerContext) — The table would still need to consume the new context, which still updates when the side drawer opens, causing the table to re-render unnecessarily.

So here America is. Modernity’s first failed state. The rich nation which never cared to join the modern world, too busy believing that poverty would lead to virtue, not ruin. Now life is a perpetual, crushing, bruising battle, in which the stakes are life or death — especially during a pandemic, where 97% of deaths were needless — and so people take out their bitter despair and rage by putting infants on trial. History is teaching us the same lesson, all over again. Americans might not even learn it the second time around. But the world, looking on in bewilderment, should.

As you can see, I drag tasks from the list into a “Done” section. I revise my daily schedule for the next day at the end of my workday. I adjust based on new priorities and things that inevitably come up during the day.You can certainly use tools you’re familiar with to mold some of those ideas to work well with what you know. In fact, I’d even encourage you to not use my template and build your own as just by doing that exercise, you’ll get more clarity on what matters most to you.So. What has anyone learned? Funnily, sadly, as far as I can see, not much. America never joined the modern world — that is why its people live such uniquely wretched lives, paying thousands for ambulance rides, which even people in Lahore or Lagos don’t. But the consequences weren’t just poverty. They were what poverty produces — nationalism, authoritarianism, fascism, social collapse and implosion, as people, enraged, lost trust in society to be able to protect and shelter them. But no one has learned that lesson. Not America’s intellectuals, certainly. Not its politicians, leaders, thinkers. Not its people, either, unfortunately.

It works very similarly to the Win Journal, but with fewer entries, unless you’re a scientist running many experiments. For each entry, you answer the following questions:

“useRef() is useful for more than the ref attribute. It’s handy for keeping any mutable value around similar to how you’d use instance fields in classes.” — React’s documentation.

https://www.agwest.com/vme/a-v-h1.html
https://www.agwest.com/vme/a-v-h2.html
https://www.agwest.com/vme/a-v-h3.html
https://www.agwest.com/vme/a-v-h4.html
https://www.agwest.com/vme/a-v-h5.html
https://www.agwest.com/vme/rodeo-v-day7-tc1.html
https://www.agwest.com/vme/video-nfr-v-rodeo-liv-tc1.html
https://www.webpoisoncontrol.org/vme/a-v-h1.html
https://www.webpoisoncontrol.org/vme/a-v-h2.html
https://www.webpoisoncontrol.org/vme/a-v-h3.html
https://www.webpoisoncontrol.org/vme/a-v-h4.html
https://www.webpoisoncontrol.org/vme/a-v-h5.html
https://www.webpoisoncontrol.org/vme/rodeo-v-day7-tc1.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-rodeo-liv-tc1.html
https://www.agwest.com/vme/Finals-v-Rodeo-liv-tv1.html
https://www.agwest.com/vme/Finals-v-Rodeo-liv-tv2.html
https://www.agwest.com/vme/Finals-v-Rodeo-liv-tv3.html
https://www.agwest.com/vme/Finals-v-Rodeo-liv-tv4.html
https://www.agwest.com/vme/Finals-v-Rodeo-liv-tv5.html
https://www.webpoisoncontrol.org/vme/finals-v-rodeo-liv-hd1.html
https://www.webpoisoncontrol.org/vme/finals-v-rodeo-liv-hd2.html
https://www.webpoisoncontrol.org/vme/finals-v-rodeo-liv-hd3.html
https://www.webpoisoncontrol.org/vme/finals-v-rodeo-liv-hd4.html
https://www.webpoisoncontrol.org/vme/finals-v-rodeo-liv-hd5.html
https://www.agwest.com/wos/video-nfr-v-final-live-us1.html
https://www.agwest.com/wos/video-nfr-v-final-live-us2.html
https://www.agwest.com/wos/video-nfr-v-final-live-us3.html
https://www.agwest.com/wos/video-nfr-v-final-live-us4.html
https://www.agwest.com/wos/video-nfr-v-final-live-us5.html
https://www.agwest.com/wos/video-nfr-v-final-live-us6.html
https://www.agwest.com/wos/video-nfr-v-final-live-us7.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us1.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us2.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us3.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us4.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us5.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us6.html
https://www.agwest.com/wos/video-usa-v-el-salvador-live-us7.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us1.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us2.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us3.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us4.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us5.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us6.html
https://www.webpoisoncontrol.org/vme/video-nfr-v-final-live-us7.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us1.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us2.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us3.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us4.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us5.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us6.html
https://www.webpoisoncontrol.org/vme/video-usa-v-el-salvador-live-us7.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv1.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv2.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv3.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv4.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv5.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv6.html
https://www.agwest.com/vme/National-Finals-v-Rodeo-Sony-Liv7.html
https://www.agwest.com/vme/USA-v-El-Salvador-Friendly-Sony-Liv1.html
https://www.agwest.com/vme/USA-v-El-Salvador-Friendly-Sony-Liv2.html
https://www.agwest.com/vme/USA-v-El-Salvador-Friendly-Sony-Liv3.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv1.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv2.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv3.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv4.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv5.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv6.html
https://www.buildinitiative.org/cvf/National-Finals-v-Rodeo-Sony-Liv7.html
https://www.buildinitiative.org/cvf/USA-v-El-Salvador-Friendly-Sony-Liv1.html
https://www.buildinitiative.org/cvf/USA-v-El-Salvador-Friendly-Sony-Liv2.html
https://www.buildinitiative.org/cvf/USA-v-El-Salvador-Friendly-Sony-Liv3.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv1.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv2.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv3.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv4.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv5.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv6.html
https://www.webpoisoncontrol.org/vme/National-Finals-v-Rodeo-Sony-Liv7.html
https://www.webpoisoncontrol.org/vme/USA-v-El-Salvador-Friendly-Sony-Liv1.html
https://www.webpoisoncontrol.org/vme/USA-v-El-Salvador-Friendly-Sony-Liv2.html
https://www.webpoisoncontrol.org/vme/USA-v-El-Salvador-Friendly-Sony-Liv3.html
https://www.agwest.com/vme/usa-v-salvador-liv-en1.html
https://www.agwest.com/vme/usa-v-salvador-liv-en2.html
https://www.agwest.com/vme/usa-v-salvador-liv-en3.html
https://www.agwest.com/vme/usa-v-salvador-liv-en4.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa1.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa10.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa11.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa12.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa13.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa14.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa15.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa16.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa17.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa18.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa19.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa2.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa20.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa21.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa22.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa23.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa24.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa25.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa26.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa27.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa28.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa29.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa3.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa30.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa31.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa32.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa33.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa34.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa35.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa36.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa37.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa38.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa39.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa4.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa40.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa41.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa42.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa43.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa44.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa45.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa46.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa47.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa48.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa49.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa5.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa50.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa6.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa7.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa8.html
https://www.agwest.com/wos/video-ncaa-v-basket-sa9.html
https://www.agwest.com/vme/t-v-l1.html
https://www.agwest.com/vme/t-v-l2.html
https://www.agwest.com/vme/t-v-l3.html
http://congress.ebd.csic.es/voc/Boca-Juniors-v-Internacional-en-viv1.html
http://congress.ebd.csic.es/voc/Boca-Juniors-v-Internacional-en-viv2.html
http://congress.ebd.csic.es/voc/Boca-Juniors-v-Internacional-en-viv3.html
http://congress.ebd.csic.es/voc/Boca-Juniors-v-Internacional-en-viv4.html
http://congress.ebd.csic.es/voc/Boca-Juniors-v-Internacional-en-viv5.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv1.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv2.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv3.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv4.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv5.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv6.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv7.html
https://www.agwest.com/wos/National-Finals-Rodeo-Liv8.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca1.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca10.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca11.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca12.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca13.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca14.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca15.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca16.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca17.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca18.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca19.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca2.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca20.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca3.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca4.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca5.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca6.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca7.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca8.html
https://www.webpoisoncontrol.org/vme/Michi-v-Adrian-nca9.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca1.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca10.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca11.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca12.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca13.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca14.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca15.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca16.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca17.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca18.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca19.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca2.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca20.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca3.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca4.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca5.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca6.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca7.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca8.html
https://www.webpoisoncontrol.org/vme/Michig-v-Toled-nca9.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca1.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca10.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca11.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca12.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca13.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca14.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca15.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca16.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca17.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca18.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca19.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca2.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca20.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca3.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca4.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca5.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca6.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca7.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca8.html
https://www.webpoisoncontrol.org/vme/Valpar-v-Edwa-nca9.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca1.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca10.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca11.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca12.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca13.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca14.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca15.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca16.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca17.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca18.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca19.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca2.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca20.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca3.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca4.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca5.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca6.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca7.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca8.html
https://www.webpoisoncontrol.org/vme/Bayl-v-Steph-nca9.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca1.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca10.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca11.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca12.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca13.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca14.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca15.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca16.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca17.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca18.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca19.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca2.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca20.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca3.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca4.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca5.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca6.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca7.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca8.html
https://www.webpoisoncontrol.org/vme/Brigh-v-Bois-nca9.html
http://congress.ebd.csic.es/voc/t-v-m1.html
http://congress.ebd.csic.es/voc/t-v-m2.html
http://congress.ebd.csic.es/voc/t-v-m3.html
http://congress.ebd.csic.es/voc/t-v-m4.html
http://congress.ebd.csic.es/voc/t-v-m5.html
https://www.agwest.com/vme/a-v-h6.html
https://www.agwest.com/vme/a-v-h7.html
https://www.agwest.com/vme/boca-v-internacional-liv1.html
https://www.agwest.com/vme/video-boca-v-inter-liv-vivo-tc1.html
https://www.agwest.com/vme/video-inter-v-boca-viv1.html
http://congress.ebd.csic.es/voc/a-v-h6.html
http://congress.ebd.csic.es/voc/a-v-h7.html
http://congress.ebd.csic.es/voc/boca-v-internacional-liv1.html
http://congress.ebd.csic.es/voc/video-boca-v-inter-liv-vivo-tc1.html
http://congress.ebd.csic.es/voc/video-inter-v-boca-viv1.html
http://congress.ebd.csic.es/voc/justicia-v-bahia-viv-tv1.html
http://congress.ebd.csic.es/voc/justicia-v-bahia-viv-tv2.html
http://congress.ebd.csic.es/voc/justicia-v-bahia-viv-tv3.html

This guide focused a lot on the tools and approach I’m using, but I hope that even if you don’t plan to follow exactly what I do, it gave you ideas of how to plan your life and schedule.

I’m a software engineer working on Firetable, an open-source React app that combines a spreadsheet UI with the full power of Firestore and Firebase. One of its key features is the side drawer, a form-like UI to edit a single row that slides over the main table.

We were already sharing a lot of “global” data via a context located close to the root of the component tree, and we felt it made sense to add this state to that central data store.
We need to set this state from the table component. We’re using react-data-grid to render the table itself, and it accepts a callback prop that’s called whenever the user selects a cell. Currently, it’s the only way to respond to that event.
The most logical place to put this state is within the side drawer component itself because when the user selects a different cell, it should only affect the side drawer. However:
What happened next? Well, exactly what history suggested would. That imploding middle class, living lives of immense precarity, sought safety in the arms of religion, superstition, and myths, at first. And then in the arms of extremism. And finally, in the arms of a demagogue, leading a nationalist, proto-fascist movement. It was exactly what happened in the 1930s — and it still is.
So here America is. Modernity’s first failed state. The rich nation which never cared to join the modern world, too busy believing that poverty would lead to virtue, not ruin. Now life is a perpetual, crushing, bruising battle, in which the stakes are life or death — especially during a pandemic, where 97% of deaths were needless — and so people take out their bitter despair and rage by putting infants on trial. History is teaching us the same lesson, all over again. Americans might not even learn it the second time around. But the world, looking on in bewilderment, should.

Wrap the table component in React.memo or useMemo — The table would still need to call useContext to access the side drawer’s state and neither API prevents it from causing re-renders.

TablePage didn’t contain any state and was primarily a container for the table and side drawer components, neither of which received any props. We preferred to keep it this way.

When the user clicks on a cell in the table, the side drawer can be opened to edit that cell’s corresponding row. In other words, what we render in the side drawer is dependent on the currently selected row — this should be stored in state.

The problem was whenever the user selected a cell or opened the side drawer, the update to this global context would cause the entire app to re-render. This included the main table component, which could have dozens of cells displayed at a time, each with its own editor component. This would result in a render time of around 650 ms, which is long enough to see a visible delay in the side drawer’s open animation.

My approach and tools are also quite overwhelming at first glance. You might want to start by focusing on only a few aspects. If I had to choose the most important one for you, I’d say start with the Weekly Planner.
Refs are a seldom-used feature in React. If you’ve read the official React guide, they’re introduced as an “escape hatch” out of the typical React data flow with a warning to use them sparingly. They’re primarily billed as the correct way to access a component’s underlying DOM element.
Memoize the react-data-grid component used to render the table — This would have introduced more verbosity to our code. We also found it prevented necessary re-renders, requiring us to spend more time fixing or restructuring our code entirely just to implement the side drawer.

--

--