I have a few components being rendered from an Array.map() that won't update even when the state (pertaining to said array) changes, and I have no clue why this is.
Home (main component) :
import React, { useState } from 'react';import { View, TouchableOpacity } from 'react-native';import { base } from './data';import Indicator from './components/Indicator';const Home = () => { const [switches, setSwitches] = useState(base); const handleToggle = (id: number) => { base.map(switch => { switch.on = (switch.on && switch.id !== id) || (!switch.on && switch.id === id) ? !switch.on : switch.on; }); setSwitches(base); }; return (<View> {switches.map(switch => (<TouchableOpacity onPress={() => handleToggle(switch.id)} key={switch.id}><Indicator color={switch.color} on={switch.on} /></TouchableOpacity> ))}</View>
Indicator component:
import React from 'react';import { View } from 'react-native';import { On, Off } from './Indicators';interface IndicatorProps { color: string; on: boolean;}const Indicator: React.FC<IndicatorProps> = ({ color, on }) => { return (<View> {on ? <On /> : <Off />}</View> );};export default Indicator;
I have verified that the state of switches
is changing as expected when clicking the touchable areas, but no visible change occurs in the components.