使用useEffect来保持背景颜色状态的技巧
P粉131455722
P粉131455722 2023-08-18 15:08:53
[React讨论组]
<p>我正在尝试保存愿望单切换按钮的背景颜色,以便当用户跨页面时,按钮的颜色保持为“黑色”,以向用户显示他们已经将该物品保存到愿望单中。</p> <pre class="brush:php;toolbar:false;">const Item = (props) =&gt; { const dispatch = useDispatch(); const [background, setBackground] = useState(false); function addToCartHandler(product) { dispatch(addToCart(product)); } function toggleWishlistHandler(product) { dispatch(toggleItem(product)); setBackground((current) =&gt; !current); } return ( &lt;div&gt; &lt;li className={classes.item}&gt; &lt;img src={props.img} alt=&quot;Item&quot; className={classes.image} /&gt; &lt;div className={classes.description}&gt; &lt;p className={classes.title}&gt;{props.title}&lt;/p&gt; &lt;p className={classes.price}&gt;£{props.price}.00&lt;/p&gt; &lt;/div&gt; &lt;div className={classes.actions}&gt; &lt;div className={`${classes.addWishlist} ${classes.icon}`} onClick={() =&gt; toggleWishlistHandler(props.product)} style={{ backgroundColor: background ? &quot;black&quot; : &quot;orange&quot;, }} &gt; &lt;i className=&quot;fa-solid fa-heart&quot;&gt;&lt;/i&gt; &lt;/div&gt; &lt;div className={`${classes.addCart} ${classes.icon}`} onClick={() =&gt; addToCartHandler(props.product)} &gt; &lt;i className=&quot;fa-solid fa-bag-shopping&quot;&gt;&lt;/i&gt; &lt;/div&gt; &lt;/div&gt; &lt;/li&gt; &lt;/div&gt; ); }; export default Item;</pre>
P粉131455722
P粉131455722

全部回复(1)
P粉642919823

您可以将颜色保存在本地存储中。

// 检查是否设置为黑色
  const [background, setBackground] = useState(localStorage.getItem('wishlistBackground') === 'black');


// 每当背景颜色发生变化时,将其保存到本地存储中
  useEffect(() => {
    localStorage.setItem('wishlistBackground', background ? 'black' : 'orange');
  }, [background]);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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