useData es estado que pertenece a una parte de la escena, y se lee como lives.value; useWatch corre cuando cambia. Pulsa espacio para recibir un golpe y R para reiniciar. El setter tiene tres formas, y están las tres: el valor, una función que devuelve el siguiente y una función que lo cambia en su sitio. El watch también corre una vez en el primer fotograma, así que la pantalla empieza bien sin escribirla dos veces. Si lo cambias con lives.value = 0, el watch no se entera: la misma regla que en React.
Cuándo no usarlo. Para un valor que solo usa este componente basta un let en el cuerpo: el cuerpo corre una vez, pero todo lo que se escribe dentro ve la misma variable después. Lo que añade useData son dos cosas que una variable local no puede hacer: se escribe en el documento de la escena, así que una partida guardada devuelve el valor; y tiene identidad, así que se puede pasar a otra parte de la escena, que es el siguiente ejemplo.