I have a component that doesn't re-render when the state variable changes and I don't understand why. Here is the code:-
export default function SalesItem(props) {
const classes = useStyles();
const api = new API();
const [salesItem, setSalesItem] = React.useState(null);
const [site, setSite] = React.useState(null);
useEffect(() => {
api.getSite(props.siteCode).then((site) => {
setSite(site);
api.getSalesItem(site.SiteID, props.salesItem).then((salesItem) => {
setSalesItem(salesItem);
})
})
}, [])
return (
<form className={classes.root} noValidate autoComplete="off">
<Input
defaultValue={salesItem === null ? "test" : salesItem.Description}
inputProps={{ 'aria-label': 'description' }}
fullWidth
/>
</form>
)
}
The values of site and salesItem do change but the Input field only ever displays "test" which tells me that the component isn't re-rendering and I cannot figure out why.