子组件初始化的问题


#1

各位大神,本人开发遇到的问题,vue项目有一个公共子组件多处调用,有没有办法可以实现子组件每次调用都可以让子组件重新渲染(初始化,不仅仅是数据初始化)?


#2

给那个子组件加一个 key 属性,值是一个数字类型的公共变量,每次调用加个 1。

不过你为什么一定要初始化,而且数据初始化和你说的初始化有什么不同?


#3

因为有些交互样式被保留了,加个key然后呢?


#4

https://jsfiddle.net/SilentDepth/t45zx3ng/


保留样式和初始化组件有什么关系呢?


#5

就是说,一个表单子模块,调用的时候触发了正则变红,其他地方调用,也已经变红


#6

你想要样式和状态分离?然而这跟重新渲染又有啥关系……


#7

为啥非要初始化呢,你想触发什么函数,你可以watch某个特殊值的变化,从而触发你想要的初始化事件


#8

我定义的一个子组件也是,多处调用,同一个props参数每次调用传的值都不同,但是在父组件里除了第一个调用,其他的调用子组件都拿到第一次调用的值,也就是以后的调用都没起作用


#9

vue复用的问题,加个key别让它复用就好了 但是也违背了复用提高性能的初衷


#10

如果样式是在子组件中写死的,在复用时是不会重绘和回流的,不过你可以覆盖。组件封装尽量不要让子组件参与数据接收和数据处理,只做需要做需要做的,业务逻辑让父组件实现,这样才能实现复用的目的,否则你的组建封装的很失败


#11

要销毁组件v-if,或者手动清除组件状态


#12

把样式和数据写在初始化函数里面呗
重新调用的时候直接执行初始化函数就行了