vue.js错误码 error中异步请求报这个错误的意思是什么?

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
父组件App.vue
子组件sonCp.vue
报错但是数据能渲染上去
求解,顺便帮我看一下我取数据方式对么,是放到created这个里面么
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
子组件最初得到的是空字符串,木有.acount.name之类的属性,所以出错。
最简单的解决办法:
父组件App.vue中的
&sonCp :dataObj="dataObj" /&
&sonCp :dataObj="dataObj" v-if="dataObj" /&
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
异步请求的数据是会渲染两次的!第一次是请求没完成时,这时候obj是你返回的''。然后子组件去取值,肯定发生错误呀!第二次才是请求返回,然后才有数据。所以解决方式就很明显了,有很多种解决方式。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
初始时dataObj是空字符,所以传到子组件肯定会报错,可以通过v-if判定下是否已取到数据,取到之后再进行渲染。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一、如楼上所述,在dom中通过v-if判断dataObj.length,保证在有数据情况下的渲染(推荐!!)
二、提前在父组件data选项中设定好dataObj对象的数据结构,比如:
dataObj: {
account: {
另外建议楼主尽量在data选项中预留初始项时选择合适的数据类型赋默认值,比如父组件中dataObj要存放的是数组类型,尽量dataObj: [],这样也语义表达上也明确。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
&son-cp :data-obj="dataObj"&&/son-cp&
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。当前位置:
(vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行
猜你喜欢的文章
(vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行
来源:网络整理&&&&&时间: 0:19:13&&&&&关键词:
关于网友提出的“ (vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行”问题疑问,本网通过在网上对“ (vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: (vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行
描述:我在一个子组件中methods里有一个点击函数takehash(index){
let hash = this.searchList[index].
this.$store.commit('playvideo', hash);
console.log(this.$store.state.box.Url);
}store的mutations里有一个方法playvideo(state,hash){
Vue.http.get("json.php"+hash).then(res=& {
let jsonObj = res.
state.box.Url= jsonObj.
console.log('no');
}但是我发现我想要的过程是commit playvideo方法后,执行playvideo方法后,console出来他的url,但是结果却是先console出来url,然后才执行playvideo方法,mutations不是同步方法吗,为什么会延迟执行,我刚接触vuex,求大神解决解决方案1:mutations不是同步方法吗mutations 同步的意思是你要保证 mutations 里的方法是同步的,并不是 mutations 把你异步的方法变成同步。异步方法放在 actions 里解决方案2:理论上mutations只用来放同步的方法.而不能使用异步.而你的playvideo里面放了个异步方法.那执行结果肯定是异步啊.
以上介绍了“ (vue.js)为什么我调用vuex中的mutation方法,得到的却是异步执行”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4325932.html
上一篇: 下一篇:vue-hackernews中的异步数据改用vue-resource报错 TypeError:Cannot redefine property:$url - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
最近学习vue全家桶,改写vue-hackernews中异步数据部分,改用vue-resource,结果报错
主要是在app.js中加入了下面两行代码
import VueResource from 'vue-resource'
Vue.use(VueResource);
结果,npm run dev 正常,页面第一次请求正常。但,当刷新页面时报 Internal Error 500,服务器端报
error during render : /top
TypeError: Cannot redefine property: $url
at Function.defineProperties (&anonymous&)
at plugin (__vue_ssr_bundle__:4089:12)
at Function.Vue.use (/Users/gpd/work/vue-hackernews/node_modules/vue/dist/vue.runtime.common.js:3437:14)
at Object.module.exports.Object.defineProperty.value (__vue_ssr_bundle__:263:45)
at __webpack_require__ (__vue_ssr_bundle__:21:30)
at Object.&anonymous& (__vue_ssr_bundle__:4199:63)
at __webpack_require__ (__vue_ssr_bundle__:21:30)
at __vue_ssr_bundle__:67:18
at Object.&anonymous& (__vue_ssr_bundle__:70:10)
at /Users/gpd/work/vue-hackernews/node_modules/vue-server-renderer/build.js:6346:21
请教大神改如何解?
经过搜索发现,是因为vue-resource不再更新,不支持vue-ssr。解决方案是转使用axios或是superagent。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的403 Forbidden
Request forbidden by administrative rules.在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
新手用vue-cli,请教数据获取思路!需求:需要获取一个全局的userdata的对象,在以后每个子vue里都需要用到。
1、App.vue里的mounted里异步请求了数据2、通过&router-view :sub_userdata="userdata"&&/router-view&传递到list.vue。
userdata:[]
mounted: function () {
this.$nextTick(function () {
this.$http.get("ajax.php").then(function(response){
that.userdata=response.data
3、list.vue里通过props设置sub_userdata接受app.vue里传递过来的数据4、在computed里通过获取到的sub_userdata,再ajax取list信息。
export default {
components: {
props:['sub_userdata'],
data :function () {
computed:{
my_list: function () {
if (this.sub_userdata&0){
this.load_list();
load_list:function(){
this.$http.get("ajax.php?userdata="+this.sub_userdata,{}).then(function(response){
that.list= response.
我感觉这个流程好混乱,有很多问题,我想应该有更好的方法吧。问题:1、初次获取userdata的时候因为是异步,所以list.vue里的computed会执行2次,第一次是空,第二次是取到数据后执行的,所以没有办法这里加了一个判断if (this.sub_userdata&0)2、computed里设置了一个属性my_list,实际上没有用,我在获取list列表的时候,直接赋值给了list属性,也感觉很奇怪。而且在template里一定要加上my_list属性,&div&{{my_list}}&/div&才能真正获取到list数据。
初学者,请大家帮帮忙吧!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
没那么复杂,实现方式有很多种
如果只是子组件用到,即父对子通信,有三种方式:
props 就是你所用的,但是检测变化可以用watch,个人觉得computed不好用,不易更改,如果要改变,增加set方法,还需要一个中间变量
bus.$emit('list') 事件触发,子组件用bus.$on('list'),bus的具体用法参考官方文档
ref,用法参考官方,直接在父组件改变子组件的值
vue.prototype
我还是不太明白你的需求,我现在的理解就是获取到这个userData的后页面就跳转,或者发起其他异步请求。可以在app.vue发起请求,然后将数据传到子组件
// app.vue
userData: null
created() {
this.$http.get('ajax.php')
.then(res =& {
this.userData = res.data
// 其实你可以直接在这里this.getData
userData(v) { if (v) { this.getData(v) }}
methods: {
getData(userData) {
this.$http.get(`ajax.php?userdata=${userData}`,{}).then(res =& {
// todo 这里你可以把数据通过props传给子组件
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的userdata是经常变化的吗?如果不变可以写在main.js里,用
Vue.prototype.变量名,之后每次this.变量名就能获取了。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 vuejs 异步请求数据 的文章

 

随机推荐