再躺一会儿吧 2021-06-01 12:17 采纳率: 57.1%
浏览 914
已采纳

react 里面 父组件状态变化 子组件的useeffect一直被触发,求解决办法

  componentDidMount () {
    document.querySelector(".router").addEventListener("scroll", () => {
      this.showTop()
    })
  }
  showTop = () => {
    let topValue = document.querySelector(".showimg").getBoundingClientRect().top;
    if (topValue <= 5 && topValue > 0) {
      this.setState({ searchStatus: false })
    }
    else if (topValue >= -5 && topValue < 0) {
      this.setState({ searchStatus: true })
    }
  }

监听滚轮,改变了一个状态

子组件里面 的useEffect一直被触发

import React, { useEffect, useState } from 'react';
import Swp from "swiper";
import "swiper/swiper.min.css";

export default function Swiper (props) {
  const [list, setList] = useState([])
  useEffect(() => {
    setList(props.list)
    console.log(props.list, "nihao1")
    new Swp(".swiper-container", {
      loop: true, // 循环模式选项
    }, [])
  })
......
}
  • 写回答

1条回答 默认 最新

  • 崽崽的谷雨 2021-06-01 12:43
    关注

    用useMemo这个是当依赖发生变化才重新改变,useEffect默认每次都运行这个只是执行副作用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错