当前位置: 首页 > news >正文

东台网站建设找哪家好做相关性分析的网站

东台网站建设找哪家好,做相关性分析的网站,广西桂建云个人登录,装修公司简介一、问题描述封装了一个Chart组件#xff0c;它接收一个boolean类型的props#xff0c;根据这个boolean的true或false执行不同的操作。经过console.log验证#xff0c;onReady函数只会在组件初次渲染时取到props值#xff0c;不管后面的props变化成什么都无法重新取值。二、…一、问题描述封装了一个Chart组件它接收一个boolean类型的props根据这个boolean的true或false执行不同的操作。经过console.log验证onReady函数只会在组件初次渲染时取到props值不管后面的props变化成什么都无法重新取值。二、代码描述初始化状态为0useRequest拿到后端的值为1。传递给Chart组件的props是可以拿到最新的可以在40行的打印中看到。但是onReady挂载的坐标轴点击事件打印出的却不会变化依然是0。// 父组件 import React, { useState, useEffect } from react; import { useRequest } from ahooks;const FatherComponent () {const [flag, setFlag] useState(0);const { data, loding, run } useRequest(async (params) {try {const { data, success, msg } awiat getData();if (!success) {return [];}setFlag(data.flag)return data;} catch(e) { console.log(e) };return [];}, { manual: true })useEffect(() {if (!isUndefined(data)) {setFlag(data.flag)}}, [data])return (div{data ChildChartComponent data{data} flag{flag} /}/div) } export default FatherComponent;// 子组件 import React from react import { Column } from ant-design/plots;const ChildChartComponent (props) {const { data, flag } props;console.log(flag)const config {data,// ...many config settings, its unimportantonReady: (plot) {plot.on(axis-label:click, (e) {if (Number(flag) 1) {console.log(执行props.flag为true的逻辑);} else {console.log(执行props.flag为false的逻辑);}})}}return (Column {...config} /) } export default ChildChartComponent;三、原因解析这个问题研究了整整一天换了很多种方式都寻找不到问题所在。一开始想是我得状态不对再之后是觉得是最新的onReady没有被重新赋值给chart组件。在官方文档中没找到相关问题描述于是乎我打开Github进入到组件仓库在issues里找Bug和提问终于被我找到跟我有相关问题的同志。原来是因为onReady()函数是一个闭包在子组件初次渲染的时候它保存的值是初始值0所以一直拿不到新状态。四、修改子组件的写法利用useRef解决闭包问题我们声明一个ref在effect中的deps校验规则设置为flageffect方法内将ref的current每一次都指向flag。将onReady中的on方法内的通过flag判断改为通过flagRef.current判断即可。useRef可以解决闭包问题的原因在于 useRef 返回的是 { current: null }将对应数据赋值给 current在声明之后引用地址是不变的。// 子组件 import React, { useRef, useEffect } from react import { Column } from ant-design/plots;const ChildChartComponent (props) {const { data, flag } props;const flagRef useRef(null)useEffect(() {flagRef.current flag;}, [flag])const config {data,// ...many config settings, its unimportantonReady: (plot) {plot.on(axis-label:click, (e) {if (Number(flagRef.current) 1) {console.log(执行props.flag为true的逻辑);} else {console.log(执行props.flag为false的逻辑);}})}}return (Column {...config} /) } export default ChildChartComponent;
http://www.eeditor.cn/news/123402/

相关文章:

  • 周口网站建设多少钱天津建设网工程信息网站
  • 网站建设的作用和意义郑州网站建设炉石
  • 为企业做网站重庆的公需科目在哪个网站做
  • 网站渗透入侵全部教程建简单网站
  • 百度网站打开百度关键词工具
  • 开发软件学什么专业兰州网站优化
  • 简约 个人网站网盘手机app官网下载
  • 响应式网站服务锦州网站设计
  • 合肥专业网站制作安徽合肥建设网
  • 求个网站你懂我意思是用群晖nas做网站
  • 做网站时无法上传图片凡科网站免费版
  • 庆安建设局网站广州网站建设出名 乐云践新
  • 一个产品有两个品牌怎么做网站WordPress QQ 微
  • 网站建设工作人员有哪些职责专业企业建站系统
  • 美食网站怎样做锅包肉南宁公司建站模板
  • 南京移动网站建设报价建筑模板的规格
  • 创新的网站建设排行榜黄埔建网站公司
  • 阳网站建设营子区住房和城乡建设局网站
  • 网站建设实训报告wordpress出境游
  • 一个网站占空间有多少g北京注册工作室代理公司
  • 如何把学校网站建设好安卓版下载
  • 网站建设用的是什么软件商丘网站建设哪家好
  • 视频网站的链接怎么做的凡科是大厂吗
  • 知名高校网站建设网站建设开公司现在好做吗
  • 网上花店 网站源代码做网站的大公司
  • 浏览有关小城镇建设的网站 记录云南网站建设定做
  • 黑五手表网站互联网营销培训班
  • 找企业名录的网站凡科注册的网站怎么被百度收录
  • 网站上加一个浮动小框怎么做写作网站名字
  • ios7 风格 网站大连市建设工程招标信息网