At the moment in my component I am setting the default value to 'null', but I am trying to default the active states value to the first object in the objects which is part of the state, a bit confused.
code so far:
import React from 'react';
interface ActiveObject {
id: number;
title: string;
function(index: number): void;
};
interface ButtonGroupState {
activeObject: ActiveObject | null;
objects: ActiveObject[];
};
const ButtonGroup: React.FunctionComponent = () => {
const [active, setActive] = React.useState<ButtonGroupState>({
activeObject: null,
objects: [{
id: 1,
title: '1 Week',
function(index: number) {
setActive({ ...active, activeObject: active.objects[index] })
}
}, {
id: 2,
title: '1 Month',
function(index: number) {
setActive({ ...active, activeObject: active.objects[index] })
}
}, {
id: 3,
title: '3 Months',
function(index: number) {
setActive({ ...active, activeObject: active.objects[index] })
}
}]
})
const toggleActiveStyles = (index: number) => {
if (active.objects[index] === active.activeObject) {
return "btn-active"
} else {
return " btn-plain"
}
}
return (
<> <div className="wrapper">
{active.objects.map((inner, index) =>
<button type="button" className={toggleActiveStyles(index)} onClick={() => inner.function(index)} key={inner.id}>{inner.title}</button>
)}
</div>
</>
)
}
export default ButtonGroup;