Actualmente configuro mi estado active en 0:
const [active, setActive] = useState(0); pero me pregunto cómo puedo establecer el valor inicial en null si uno de mis accesorios de componente: isFilterMode es verdadero. Entonces, ¿el estado inicial es "dinámico" basado en los accesorios?
Prueba como a continuación
const [active, setActive] = useState(props.isFilterMode ? null : 0);O
usando una función de devolución de llamada ( lazy initialisation )
const [active, setActive] = useState(() => props.isFilterMode ? null : 0);const Component = ({ isFilterMode }) => { const [active, setActive] = useState(() => isFilterMode ? null : 0); ... }puede definir una expresión con un valor de retorno como argumento para useState. Con un operador ternario como props.isFilterMode ? null : 0 devolvería null si el valor de props.isFilterMode evalúa como verdadero y 0 en caso contrario. Entonces en useState tendrías:
const [active, setActive] = useState(props.isFilterMode ? null : 0);Y como Amila sugirió en la otra respuesta, puede usar una devolución de llamada como parámetro para usar Estado y lo que se evalúe y devuelva desde esa devolución de llamada sería su estado inicial usando funciones de flecha, haría algo como:
const [active, setActive] = useState(() => props.isFilterMode ? null : 0);o más explícitamente pero con un código más largo:
const [active, setActive] = useState(() => { if(props.isFilterMode){ return null;} else { return 0;} } );