当 Redux 存储值更改时,React Tab 组件不会更新活动选项卡
P粉950128819
P粉950128819 2023-08-31 17:49:11
[React讨论组]
<p>我在 React 应用程序中使用 Chakra UI Tab 组件。我在 Redux 中存储了一个数字值,我想根据该值更改活动选项卡。但是,当我更新商店中的数值时,活动选项卡不会相应更改。我该如何解决这个问题?</p> <p>以下是 <code>MyTabs</code> 组件的代码:</p> <pre class="brush:php;toolbar:false;">function MyTabs() { const number = useSelector(selectnumber); console.log(number); return ( &lt;Tabs defaultIndex={number}&gt; &lt;TabPanels&gt; &lt;TabPanel&gt; &lt;Image boxSize=&quot;200px&quot; fit=&quot;cover&quot; src=&quot;&quot; /&gt; &lt;/TabPanel&gt; &lt;TabPanel&gt; &lt;Image boxSize=&quot;200px&quot; fit=&quot;cover&quot; src=&quot;&quot; /&gt; &lt;/TabPanel&gt; &lt;/TabPanels&gt; &lt;TabList&gt; &lt;Tab&gt;Naruto&lt;/Tab&gt; &lt;Tab&gt;Sasuke&lt;/Tab&gt; &lt;/TabList&gt; &lt;/Tabs&gt; ); }</pre></p>
P粉950128819
P粉950128819

全部回复(2)
P粉567281015

为了确保当 Redux 中的数值发生变化时,Chakra UI Tab 组件中的活动选项卡会更新,您可以使用 React 提供的 useEffect 钩子。 useEffect 挂钩允许您执行副作用,例如当特定依赖项发生更改时更新活动选项卡。

您可以按如下方式修改 MyTabs 组件:

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>
      );
    }**'

在此更新的代码中,useEffect 挂钩用于在数值更改时调度操作 (updateNumber)。确保您已在 Redux 切片中实现了相应的操作和化简器逻辑 (selectNumber) 来处理数字更新。

通过这样做,活动选项卡将根据 Redux 中存储的数值自动更新。

P粉953231781

defaultIndex 属性是:

请参阅受控和不受控组件默认值文档:

您可以使用受控选项卡

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

<Tabs 
  index={tabIndex} 
  onChange={(index) => dispatch({ type: 'SET_TAB_INDEX', payload: { index } })}>
</Tabs>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号