热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redux数据改变,组件运行中的生命周期不执行

大概的问题就如同

大概的问题就如同




1
标题

上描述的,我简单用代码还原下场景吧。第一次遇到这种问题,估计大多数人都没有遇到过。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// action

function getHomeData(data) {

    return {

        type: 'HOME_REAL_TIME_CHARTS_RETURN',

        homeCharts: data

    }

}

export const getHomeRealTimeData = () => {

    return dispatch => {

        //socket 获取第一次数据

        socket.emit('indexAllCoins', {type: 1})

        socket.on('indexAllCoins', function (data) {

            dispatch(getHomeData(data))

        })

    }

}

上面是




1
home

组件调用的

1
action


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// reducer

case 'HOME_REAL_TIME_CHARTS_RETURN':

    return {

        ...real,

        homeCharts: increaseHomeData(action.homeCharts)

    }





function increaseHomeData (data) {

    if(data.type === 1) {

        homeDate = data.attachment

    } else {

        let coinCode = data.attachment.coinCode

        homeDate.forEach((item, index) => {

            if(item.coinCode === coinCode) {

                homeDate[index] = data.attachment

            }

        })

    }

    return homeDate

}

上面是对应的

1
reducer

,关于

1
increaseHomeData

方法接收的数据大概是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 第一次返回

let fst = {

    type: 1,

    attachment: [{ coinCode: '1' }, ...]

}



// 以后推送的单条数据

let sec = {

    type: 2,

    attachment: {

        coinCode: '2'

    }

}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// home component

class Home extends Component {

    render () {

        const { homeCharts } = this.props

        return (

           


                {/* ... */}

           


        )

    }

}



export default connect(state => {

    console.log(state) // 这里打印的state可以明确的看到store上对于的数据已经更新

    return {

        ...state.homePage,

        random: Math.random()

    }

})()

上面是使用数据的

1
home

组件,一开始没有写

1
random

的时候,

1
log(state)

里面的数据已经改变了,但是

1
运行中

的组件却不会执行,加上

1
random

之后服务端推送的数据就能正常更新了。
使用

1
react-dev-tool

查看

1
home

1
props

的时候,发现

1
props

不会变,但是我

1
log(state)

的时候确实是变了,找了一天了,不知道问题出在哪里。
整个流程我从头

1
log

到尾,都是正常的。


   



推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • Vue3中setup函数的参数props和context配置详解
    本文详细介绍了Vue3中setup函数的参数props和context的配置方法,包括props的接收和配置声明,以及未通过props进行接收配置时的输出值。同时还介绍了父组件传递给子组件的值和模板的相关内容。阅读本文后,读者将对Vue3中setup函数的参数props和context的配置有更深入的理解。 ... [详细]
  • 点击上方“新机器视觉”,选择加”星标”或“置顶”重磅干货,第一时间送达很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间。去年有过一段时间的集中学习,做 ... [详细]
author-avatar
hanhan2502883243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有