JSFiddle - React, Tailwind, and code Playground
HTML
<html><script type="text/javascript">var y,v,r,n,c,f,k=40,g=10,b=[];onload=function(){setInterval(function(){c=[];for(y=k*k;y--;){n=0;for(f=0;f<9;)n+=b[(~~(y/k)+k+f%3-1)%k*k+(y+k+~~(f++/3)-1)%k];c[y]=n==3||n-b[y]==3;r.fillStyle=b[y]?'red':'tan';r.fillRect(y%k*g,~~(y/k)*g,g-1,g-1)}if(v.nextSibling.checked)b=c},1);v=document.getElementById('C');v.width=v.height=g*k;v.addEventListener('click',function(e){b[~~((e.pageY-v.offsetTop)/g)*k+~~((e.pageX-v.offsetLeft)/g)]^=1},0);r=v.getContext('2d');for(y=k*k;y--;)b[y]=0}</script><body><canvas id='C'></canvas><input type="checkbox"/>Run</body></html>