小白首先我不知道是不是思路有问题,或者是想偷懒的,我准备在父组件调取ajax,然后把ajax的数据分别发送到对应的子组件中,一次性ajax,就不再其他组件中调取了。但是我发现ajax因为异步的原因,首次加载传值会空??难道要用async:false同步加载吗
父组件
子组件
求一下方法 或者给我纠正一下思路
小白首先我不知道是不是思路有问题,或者是想偷懒的,我准备在父组件调取ajax,然后把ajax的数据分别发送到对应的子组件中,一次性ajax,就不再其他组件中调取了。但是我发现ajax因为异步的原因,首次加载传值会空??难道要用async:false同步加载吗
父组件
子组件
求一下方法 或者给我纠正一下思路
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
这里有几个问题:
1、ajax 的成功回调里面的 this 发生了变化,造成你 this.seller = data.data.seller 并没有赋值给赋组件的 seller 属性。用尖头函数解决。
2、因为你截图不全,我不知道你赋组件的 data 方法返回的对象里面是否有定义 seller 和 message 属性。如果没有,则不会有响应式变化,即使你后面做了 this.seller = data.data.seller 之后,也不会响应式同步到自组件中去。所以这两个属性需要在赋组件中提前申明。
3、如果提前申明了是null 或者其他的假值,自组件在 mounted 的时候 ajax 还没有回来,当然也会是空的,这里可以在父组件中对自组件加一个 v-if 来条件式渲染。 <top v-if="seller && message" :totop="seller" :message="num"></totop>
4、为什么赋组件的 ajax 要在 created 里面去发,明显可以在 beforeCreate 钩子里面去做。可以减少用户等待时间,是一种优化策略。
5、一般 ajax 的发送,会被抽象到一个统一的 API 文件中,做统一的分层管理,而不是散落在各个组件中。
这位客官,对 this 的理解还不够,let _this = this 这种写法,就好像在 2018 年写 02 年的 table 布局。