00:00
我们一般会去怎么解决呢?用什么component来代替component?嘛,就是纯洁的啊这个嗯里面呢,也说是在react里面的这个API里面说的。啊,这里面就就会说到component,它一共里面有两个,一个叫component,一个叫什么。Q component能看到吧,那他在这下面就会再去说啊。q component先说的,Component这说的什么?而component跟component很什么相似,两者区别在于啊,这一个component未实现它也就说白了默认值为true,而这个q component呢?他会去大家看到以浅层的对比谁。Pro和什么state的方式来实现该函数,说白了就做的我们这个事情,只是我们这个事情做的有点太具体是不是?
01:02
人通宝它是一个通啊,通用的一个使用,大家看好了,我来测试一把你就知道了,比如说啊,我这一个是一个component。可以吧,我要是一个Q的话,我们就要需要去看一个东西,看什么呢,我此时。啊,我此时如果说我现在找谁合适啊,应该是搞他合适一点啊来我把这个这个不用它,还是用它比较好一点,我先把它入了。可以吧,把它做了,把它改一下,相对来说好说一些啊。比较有典型性,因为他又有状态,又有自己的属性。是不是接收属性,还有自己的状态啊,好,这个地方来我们来看一下。At z。Q,我们是Q了以后,我点这个按钮,我是不去调。
02:05
但是我有更改数据吗?没有。有动吗?没有没有。是不是好,我点一下它试试。为什么?必掉吗?因为我的这个数据啊,接收的属性数据是不是发生了改变。但是如果我指定的是他呢?对不对,我如果指定是这个呢,那你说副组件里面是不是它本质上没有真正改变数据。那传过来属性改了吗?没有,那也就是说此时如果我去点这个按钮,必会重新渲染吗?会吗?
03:00
A会,A会的原因是什么?因为A是一个component吧。是吧,但是B呢。屁股卡破了。那么呢?能懂吗?这能理解吧,应该是很理解的啊,这个地方要注意这样一个事情当啊,如果我希望A也不调用,那我应该怎么做,把它A改成Q对不对?赶紧走吧。把这A改成就是一样的一个意思啊,这个地方要注意。啊好,我们一般啊,一般不去自己去实现秀的。这个方法,而是去使用谁。Pull comp。看到了吧,好,那Q的原理是什么呢?这个是经常问的一个问题。首先,他重写了实现了谁?
04:02
Should update,他的返回值是不,那不值是返回去还是?他是会对组建新旧的什么state和什么数据进什么钱比较,也就深度比较了吗?没有。如果没有变化,返回什么force,否则访问什么true,而一旦我的这个方法,这个函数访问force会怎么着啊?还会自行吗?不会。就不会重新执行run了。那所以说我们用q component是不能去解决这个问题。就不用我们自己去写秀的了吧,但是也要注意啊,你要是用Q卡的,千万千万不要写这个东西。这个玩意你要写了,他这种写法那就废了。应该更新的,他不更新了,听懂了不。
05:02
这个我是不是改变了对象内部的数据。但是我的这个状态本身改了吗?没有。他就比较发现一样,是不是他就不掉认,但是你希不希要认的需要啊,你都改了数据,你肯定是希望认对不对,所以这种写法是不应该这么写啊,千万不要这么写。好,那这个事情在我们的代码里面是有体现的,在我们的代码里面有体现。哪个了,我找几个位置啊来注意。首先啊,我们要去说一个啊,我们前面,呃,我来找一个位置,OK啊,我的角色。我有一个授权的。一个界面是吧。那我把这一个大家注意观察,我这里面是不是写了一个打印是吧,写一个打印好了来看一下。
06:01
注意观察。现在我们用了用了component。我点击一下啊,这个是其他人的不用管,看那个我手点他一下。诶。我这是我的角色,我看一下这不是我的吧,这不是我的。这不是我的,没有打印,这不是我的,这个才是我的,我的身后的命。啊,我来烧烤的面啊,来,注意观察一下。点击角色。把它清理一下。把这个清理一下,清理干净走,你大家看呢,是不是第一次在我这了。因为他第一次显示嘛,创建了是不是好,关键是。他现在有个什么事了。这个地方我们是不是又执行了一下,这一个重新认一下,但是如果你一旦用q component就不会。这个副组件肯定要更新它的这个form的副组件,因为副组件里面的界面有变化,它肯定要更新,但是我的这个form没有必要更新的,你看我改一下。
07:06
它就有变化,我改成什么呢?Component。那我这里面引入的是谁,屁股看破了。你来看一下。注意观察一下啊,先把它清理掉。点一下。开始这肯定要去认,你要显示嘛,对不对,重点在于我此时给它关闭,实际上是副组件重新认。嗯,大家要知道,如果是主线副主件论的,那子主线也要重新论吧,但现在我的子主线是一个什么PI5看是不是整理。问题什么意思?他也认了吗?这是不是没有啊?能看到吗?那这样的话我是不是就省略了一了,靠的是谁看的呀。
08:04
这能不能?能懂好这是一个地方啊,还有一个,还有一个位置要说一说,比如说啊。我说艾阿丽,我们这里面有一句这样的一个事情。嗯,大家看到我们有一个set state的options,这个实际上是我们那个,这个是我们的二级级联列表的那个数组。这里面用的是这种方式,后面用的另外一种方式。是这么用的。大家看啊,我此时其实写这个和写这个都一样。我如果用component写哪个都行,因为大家知道我说过一个事情。只要重新认的,你执照一认的就会重新渲染,是不是,如果用组件这都没问题,两种写法都没问题,但是啊,如果我用这个。我现在改成q component就会有问题。
09:04
先看问题,我再来说明是什么原因导致的啊,来看一下。回到我们的那个商品管理,回到我们的添加。啊,不用看下面都行,接着看好了。点它。那项也不出来,你看到了。不出来就是没有重新渲染。能听懂不没有重新渲染,但是我如果改一下。注意,如果我改一下,我看下是不是啊,对啊来看着。这个吧,看好了。这个时候就没问题。来,注意观察。好了吗?为什么呢?是不是为什么呢,这个就要说一个事情啊,说一个事情,我在更新状态的前面,实际上是改了我显示内部的数据。
10:07
听到不改了,这个状态里面内部的数据,那改它内部的数据,如果我直接又读这个状态去更新。他本身有变化。这一个option本身没有变,是它内部的数据发生改变,听懂吗?你的数组内部的数据发了改变,你就内部的这个这一个他的option。他的option是我,这个option是数组的某一个option。发生了改变。如果你不你不去诶。这个对的,如果你不去解构,你这么写的。他就会看到同一个options。只是内部的数据,我们说了,它是个前比较法。前比较是不是只比较我的这个变量本身呢?分层改了吗?没有,还是以前的里面option是吧。那怎么样呢,能变呢。
11:02
怎么样才能够看到知道他变了呀?点点点。能听懂不好,那这一个为什么又有用呢?那这一个。因为这个是指定一个新的,原本我的option是个空数组。这是创建了生成了一个新的。我是存心的一个option。对吧,这个时候我有必要去解构吗?这我应该,我需要这么做吗?我吗?我不需要啊,我这我就这么复值,它肯定变了呀,它必然变了,因为我是新产生的形式,原本的O形式是个公数组。对吧。那他自然是不会重新认的。对不对,那如果我仅仅是去改变那个状态对象里面或者数组里面内部的数据。
12:02
那我要想让他重新渲染我怎么办呀?是不是要去通过这个扩展运算符,三角运算符来对它进行扩展呢?要么是数组的这种形式,要么是对象吧。对象是存在同样的问题,如果对象不也说,如果这个东西是个对象,那应该怎么做,点点点忘形。不一样嘛。对吧,只要是引用类型就需要这么做。这个就要注意了,那如果我们用的是component就没问题,那如果是用的component,那就必须这么做。嗯,这个要注意。啊,OK。那这里面就有相关的一些面试题。啊,是需要去啊。大家需要知道的其实就是我们刚才说的第一个什么组件的哪个生命周期钩子能够实现组件的优化呀。
13:03
修的什么update?那的原理是什么呀?就是吧。OK,区别component和component对不对,那前面我们是不是在说,我可以先说一下这个。啊,即使让他说,你也跟我把这个从前往后说一说。就先说我存在哪些问题才能体现Q的好处嘛,是不是?我们可以自己接着我们提出来解决办法,是不是应该重写它对不对,当然自己写是不是可能写的不太好啊,那用它是不是就写的比较好啊。接着我们还可以说这些以后,最后还可以。说一下用卡应该注意什么?就是我刚才说了一个事情。能理解,不就是我如果改变的只是状态对象里面的某一个。
14:00
内部的数据。那如果我不用三点预算去扩展。那这个时候他会重新渲染吗?不会。嗯,这就能说明你现实工作中是用到了,而且踩过坑了,对不对。哎,这这个说法,那基本上你就肯定是我们说的那个二加二加一的那个第一个二。B。嗯。好,这个地方我们就把它给大家说了一下啊行。
我来说两句