Es un conocimiento común de React que tener un estado inicializado por accesorios es malo si no los sincronizamos. Esto se considera bien:
import { useState, useEffect } from 'react'; export default function MyInput({ initialValue }) { const [value, setValue] = useState(initialValue); useEffect( () => setValue(initialValue), [initialValue] ); return ( <> <h1>The value is {value}</h1> <input type="text" value={value} onChange={event => setValue(event.target.value)} /> </> ); } Pero, ¿qué pasa si en realidad no quiero actualizar el valor cuando cambia initialValue y quiero eliminar useEffect() aquí? ¿Está fuertemente en contra de la filosofía React? Tiene sentido en mi caso, ya que en realidad no quiero actualizar este valor de entrada cuando algo más cambia el valor pasado como initialValue . No quiero que los usuarios pierdan su opinión cuando eso suceda.
¿Qué tan malo es?
En esencia, no hay nada de malo en usar un accesorio como el valor inicial de una variable de estado, AFAIK.
Sin embargo, en su ejemplo, está haciendo algo que no tiene sentido: está definiendo una variable de estado que se inicializa con el valor de una propiedad, y luego, cada vez que la propiedad se actualiza, actualiza su estado con el mismo valor. Independientemente de si se trata de un antipatrón o no, no tiene sentido: solo use el accesorio directamente, está haciendo un trabajo adicional sin fines de lucro. Si elimina el useEffect , obtendrá un uso muy válido para un accesorio como valor inicial de una variable de estado.