Le composant React Tab ne met pas à jour l'onglet actif lorsque la valeur du magasin Redux change
P粉950128819
P粉950128819 2023-08-31 17:49:11
0
2
589
<p>J'utilise le composant Chakra UI Tab dans mon application React. J'ai une valeur numérique stockée dans Redux et je souhaite modifier l'onglet actif en fonction de cette valeur. Cependant, lorsque je mets à jour la valeur dans le magasin, l'onglet actif ne change pas en conséquence. Comment puis-je résoudre ce problème? </p> <p>Voici le code du composant <code>MyTabs</code> <pre class="brush:php;toolbar:false;">fonction MesTabs() { const number = useSelector(selectnumber); console.log(numéro); retour ( <Onglets defaultIndex={numéro}> <TabPanels> <TabPanel> <Image boxSize="200px" fit="couverture" src="" /> </TabPanel> <TabPanel> <Image boxSize="200px" fit="couverture" src="" /> </TabPanel> </TabPanels> <ListeTabulations> <Tab>Naruto</Tab> <Tab>Sasuke</Tab> </ListeTabulations> </Onglets> ); }</pre></p>
P粉950128819
P粉950128819

répondre à tous(2)
P粉567281015

Pour garantir que l'onglet actif du composant Chakra UI Tab est mis à jour lorsque la valeur dans Redux change, vous pouvez utiliser le hook useEffect fourni par React. Le hook useEffect vous permet d'effectuer des effets secondaires tels que la mise à jour de l'onglet actif lorsqu'une dépendance spécifique change.

Vous pouvez modifier le composant MyTabs comme suit :

import { useEffect } from 'react';
    import { useSelector, useDispatch } from 'react-redux';
    import { Tabs, TabList, Tab, TabPanels, TabPanel } from '@chakra-ui/react';
    import { selectNumber, updateNumber } from 'path/to/your/redux/slice';
    function MyTabs() {
      const number = useSelector(selectNumber);
      const dispatch = useDispatch();
      useEffect(() => {
        // Update the active tab index in Redux when the number changes
        dispatch(updateNumber(number));
      }, [number, dispatch]);
      return (
        <Tabs defaultIndex={number}>
          <TabPanels>
            <TabPanel>
              <Image boxSize="200px" fit="cover" src="" />
            </TabPanel>
            <TabPanel>
              <Image boxSize="200px" fit="cover" src="" />
            </TabPanel>
          </TabPanels>
          <TabList>
            <Tab>Naruto</Tab>
            <Tab>Sasuke</Tab>
          </TabList>
        </Tabs>
      );
    }**'

Dans ce code mis à jour, le hook useEffect est utilisé pour distribuer une opération (updateNumber) lorsque la valeur change. Assurez-vous d'avoir implémenté les opérations appropriées et la logique de réduction (selectNumber) dans votre tranche Redux pour gérer les mises à jour numériques.

En faisant cela, l'onglet actif sera automatiquement mis à jour en fonction de la valeur numérique stockée dans Redux.

P粉953231781

defaultIndex Les attributs sont :

Voir la documentation Composants contrôlés et non contrôlés et Valeurs par défaut  :

Vous pouvez utiliser Onglet Contrôlé

const tabIndex = useSelector(selectnumber);
const dispatch = useDispatch();

<Tabs 
  index={tabIndex} 
  onChange={(index) => dispatch({ type: 'SET_TAB_INDEX', payload: { index } })}>
</Tabs>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal