Slide animation won't work when component is controlled with selectedIndex
guytepper opened this issue · comments
Hi there! Thanks for the great library :)
When I'm controlling the component by changing the selectedIndex
dynamically, the sliding animation doesn't work:
const [selectedIndex, setSelectedIndex] = useState(0)
return (
<SegmentedControl
values={[0, 1]}
selectedIndex={selectedIndex}
onChange={(event) => setSelectedIndex(event.nativeEvent.selectedSegmentIndex}}
/>
)
You can see the actual code I've been using here, and the video below for the result.
Simulator.Screen.Recording.-.iPhone.11.-.2021-06-11.at.13.42.54.mp4
Actually, the problem is the version of 2.4.0
, simply downgraded to 2.3.0
and everything works great!
I hope they will resolve the animation problem.
2.3.0
is the installed version in the video I've attached. Does the animation work for you in a controlled component?
Any updates on this issue?
Problem still present :(
In the meantime to work around the problem I use the non-native version
(On the other hand, we lose the sliding animation)
import SegmentedControld from '@react-native-segmented-control/segmented-control/js/SegmentedControl.js';
One workaround is to set a timeout before state change:
const [selectedIndex, setSelectedIndex] = useState(0);
return (
<SegmentedControl
values={[0, 1]}
selectedIndex={selectedIndex}
onChange={(event) => {
const index = event.nativeEvent.selectedSegmentIndex;
setTimeout(() => {
setSelectedIndex(index);
}, 200);
}}
/>
)
It seems this library is not actively maintained anymore.
I made a segmented control with pure javascript. It does not require any native linking.
https://github.com/WrathChaos/react-native-segmented-control-2